Легкий способ упорядочить результат после того, как mongo возвращает массив, состоит в том, чтобы сделать объект с идентификатором в качестве ключей, а затем отобразить на заданный _id, чтобы вернуть упорядоченный массив.
async function batchUsers(Users, keys) {
const unorderedUsers = await Users.find({_id: {$in: keys}}).toArray()
let obj = {}
unorderedUsers.forEach(x => obj[x._id]=x)
const ordered = keys.map(key => obj[key])
return ordered
}
Вы можете попробовать Выгрузить C ++ из программного обеспечения Codeplay. Он предоставляет расширенный диалект C ++, упрощающий разработку программного обеспечения на многоядерном оборудовании, таком как процессор Cell.
Набор инструментов кросс-компилятора позволяет компилировать код для PS3 в Windows, что может быть полезно с учетом ограничений ресурсов (например, системной памяти) на консоли PS3 под управлением Linux, что может повлиять на время компиляции и использовать PS3 в качестве рабочий стол неудобный.
Доступны версии компилятора и инструментов Offload C ++ для PS3 GameOS и Linux on Cell с Cell BE SDK. Версия Cell Linux интегрируется с Eclipse CDT для IDE.
Отказ от ответственности: я разработчик в Codeplay.
Вы могли бы также попробовать Ubuntu 8.10 (Бесстрашный Козерог). Их поддержка PS3 довольно хороша, и инструкции для установки, и грубая краткая информация о компиляции может быть найдена здесь . GCC 4.3 и binutils 4.18 включают цели для Ячейки PPU (универсальная цель PowerPC) и SPUs, и существуют пакеты, доступные в репозиториях Ubuntu (например, spu-gcc, spu-g ++, spu-binutils, ppu-gdb, spu-newlib, и т.д.), который скомпилирует двоичные файлы для Вас.
До надлежащего IDE, вышеупомянутые утилиты должны интегрироваться прекрасный приблизительно с любым IDE (т.е. KDevelop, Eclipse CDT, Код:: Блоки), пока можно найти файлы подсветки синтаксиса (доступными для большинства популярных IDE). Ячейка SDK доступен также и мог потенциально обеспечить лучшую интеграцию, и пакеты доступны для RHEL 5.2, и Fedora 9 (должен смочь использовать посторонний объект для получения по запросу их в Debian/Ubuntu, но не уверенный в этом).
OpenMPI является прекрасной идеей, они смогли скомпилировать его для Основанных на ячейке блейдов ( здесь ), таким образом, я не думаю, что это должна быть проблема. Вы могли также прокрутить свою собственную передачу сообщений, поскольку низкие издержки являются ключом в извлечении хорошей производительности на Ячейке (хотя я не знаю, как подходящий OpenMPI для этого, это могло быть большим).
Книга Matthew Scarpino, Программирование Процессора Ячейки, довольно актуальна и имеет большую хорошую информацию. Кроме того, веб-сайт для книги имеет много примера кода доступного для скачивания.
был также курс MIT на параллельном программировании через процессор Cell, который имеет некоторую хорошую информацию, хотя часть его устарела, а именно, это использует старую механику ячейки, где libspe обеспечил свои собственные потоки. С новейшей версией библиотеки необходимо будет получить потоки откуда-либо (pthreads, повышение, безотносительно) для хождения параллельно под программы.
Что касается ОС и компилятора, я использовал Желтую собаку Linux 6.1. YDL удался вполне прилично до сих пор, намного лучше, чем Fedora 9 так или иначе, хотя это вероятно результат того, что YDL идет с суперлегким менеджером окон, и Fedora 9 не делает. У меня было несколько проблем с сетями, но это наиболее вероятно продукт немного причудливой сетевой среды, в которой мне настраивали систему.
, Как только у меня были YDL и выполнение, я тогда установил ячейку sdk фетровые пакеты сверху (это берет определенную работу, поскольку сценарий установки cellsdk ложно распознает YDL как RHEL, не Fedora). YDL действительно имеет большую часть SDK в наличии в одном из их пакета repos, но по умолчанию не большая часть его установлена, просто компиляторы (конечно, я не понимал это, пока я уже не взломал установщик IBM, чтобы сделать правильную вещь). Я просто использую основные компиляторы IBM (не эти XL материалов).
существует также тонна информации, рассеянной вокруг сайт IBM , но может быть немного трудно понять.