Как многие люди отметили, средняя производительность случая для quicksort быстрее, чем сортировка с объединением. , Но это только верно, если Вы предполагаете, что постоянное время получает доступ к какой-либо части памяти по требованию.
В RAM это предположение обычно не слишком плохо (это не всегда верно из-за кэшей, но это не слишком плохо). Однако, если Ваша структура данных является достаточно большой для проживания на диске, то quicksort добирается , уничтожил тем, что средний диск делает что-то как 200 случайных, ищет в секунду. Но тот же самый диск не испытывает никаких затруднений при чтении или записи мегабайт в секунду данных последовательно. Который является точно, что делает сортировка с объединением.
Поэтому, если данные должны быть отсортированы на диске, Вы действительно, действительно хотят использовать некоторое изменение на сортировке с объединением. (Обычно Вы подсписки quicksort, затем начните объединять их вместе выше некоторого порога размера.)
, Кроме того, если необходимо сделать что-нибудь с наборами данных того размера, думайте трудно о том, как избежать, ищет на диск. Например, это - то, почему это - стандартный совет, что Вы отбрасываете индексы прежде, чем сделать большие загрузки данных в базах данных, и затем восстанавливаете индекс позже. Поддержание индекса во время загрузки постоянно означает ищущий на диск. В отличие от этого, при отбрасывании индексов тогда база данных может восстановить индекс первой сортировкой информации, с которой будут иметь дело с (использование сортировки с объединением, конечно!) и затем загрузка его в B-ДЕРЕВО datastructure для индекса. (B-ДЕРЕВЬЯ естественно поддерживаются в порядке, таким образом, можно загрузиться один от отсортированного набора данных с немногими, ищет на диск.)
было много случаев, где, понимая, как избежать, поиск на диске позволил мне заставить задания обработки данных занять часы, а не дни или недели.
Вот несколько советов с передовой:
var myns = myns || {};
) Поскольку у вас есть JS-движок в Java возьмите за привычку писать модульные тесты для вашего JS-кода. Выберите стиль кодирования и энергично примените его. Если возможно, используйте инструменты, чтобы проверить, соответствует ли код стилю кодирования.
Я бы посмотрел на CommonJS (ранее ServerJS). Это очень большая работа, но у них есть стандартизированная модульная система с несколькими реализациями. Уже есть несколько полезных библиотек, написанных для спецификации CommonJS, например Narwhal .
Как любит говорить Дуглас Крокфорд, JavaScript - это язык программирования, который чаще всего понимают неправильно. Хотя многие этого не знают, существует правильный способ кодирования на JavaScript. Я не сомневаюсь, что если вы позволите разработчикам Java начать кодирование до того, как поймете, как писать хороший JavaScript, вы столкнетесь с серьезными проблемами.
Первое, что нужно сделать, - это убедиться, что все прочитали отличную статью Mozilla, Повторное введение в JavaScript ( https://developer.mozilla.org/en/a_re-introduction_to_javascript ). Одна из самых больших проблем с JavaScript заключается в том, что существует множество способов решения наиболее распространенных задач, и эта статья должна привлечь людей к одной и той же странице. Еще одна важная ссылка - это работа Дугласа Крокфорда, включая JavaScript: The Good Parts.
Еще одна вещь, которая поражает многих программистов Java / C ++, - это то, что JavaScript использует функцию область видимости НЕ блока. Это может вызвать очень сложные проблемы. В A List Apart есть отличная статья об этой проблеме под названием «Связывание в JavaScript».
Подводя итог основным проблемам, обсуждаемым в приведенных выше ресурсах, наиболее важными отличиями, которые необходимо изучить, являются
Ниже приведены несколько ссылок, которые могут вам помочь: