Стоит учитывать, что цифры не совсем точные. Полная сортировка во втором случае не учитывает время рендеринга результатов, т.к. рендеринг асинхронный.
Приведеённое время — это время на непосредственную сортировку + отрисовку первых 50 результатов.
Нет, документФрагмент я не использовал. В последней версии (0.13) сделана визуальная оптимизация, которая вставляет элементы батчами для того, чтобы пользователь скорее увидел результат сортировки.
На моей машине сортировка «топика про мажоров» до первой перерисовки занимает примерно пол секунды.
У вас сейчас есть 2 узких места — вставка отсортированных элементов в ДОМ и сама сортировка.
Про оптимизацию сортировки можно почитать тут: blog.rodneyrehm.de/...g-It-Wrong.html
У вас есть ещё шаг для упрощения предиката сортировки — вынести поиск hash у элемента на этап инициализации, т.е. делать предобработку (т.е. присобачивать hashId к каждому элементу в массиве заранее перед сортировкой)
requestAnimationFrame может помочь вам сделать процесс сортировки «визуально» быстрее на этапе вставки ДОМ-элементов. Вам нужно сделать вставку элементов батчами. Это усложнит код и замедлит процесс в целом, но визуально это будет быстрее — пользователь будет видеть первые элементы сразу после сортировки.
Я вам на гитхабе запилил пул-реквест со всеми этими оптимизациями.
Скорость выросла на порядок.
Я не оформлял оптимизации разными коммитами, но оставил в коде полезные комментарии.
Надеюсь, они вам помогут разобраться что к чему ;)
Советую попробовать поиграться с кодом и сравнить время выполнения до и после конкретных изменений.
Вы бы замерили, что у вас тормозит. Скорее всего — работа с DOM-нодами. Воркеры тут не помогут, а поможет requestAnimationFrame и сортировка кусками, чтобы дать браузеру «отдохнуть». А ещё лучше так:
1. Прятать комментарии через display:none
2. «Отрывать» их от элемента-контейнера (gist.github.com/cowboy/938767)
3. Сортировать оторванные элементы
4. Присоединить обратно.
5. Profit!
Думаете, Android-разработчику придётся теоремы доказывать?
Посмотрите в сторону Apache Spark и Apache Shark. Это самая хайповая БигДата.
А попутно займитесь машин-лернингом с каким-нибудь MLLib.
Вот вам и применение скалы, и большие данные и сложные задачи.
Я так понимаю, что предлагается просто программа курса? А материалы нужно искать самостоятельно?
За навык качественно работу работать.
Найти идейных майдановцев также можно в IT-намете: dou.ua/calendar/4376
Заодно можете там и выступить, рассказать про свою идею.
Поизучал ссылки из комментариев — мысль стала вырисовываться и проясняться.
Огромная просьба к Сергею — сформулируйте объяснение «что это за система и зачем она мне» на языке простого человека, ничего не понимающего в финансовых махинациях (баба Маня, торгующая на рынке за гривну и я, скромный труженник клавиатуры).
Убьете сразу двух зайцев — это позволит привлечь людей как на этапе создания системы, так и на этапе вывода системы в общую эксплуатацию. Вам стоит сформировать посыл «почему я, как пользователь, стану лучше и чем мне эта система поможет». Крайне желательно, чтобы этот посыл формулировался простыми словами и задействовал понятную логику (в идеале — аналогии).
Есть пару концептуальных проблем, главная из которых — малое количество вакансий :)
Перспективный? Да, для работы над очередными «формочками» за бОльшие деньги.
Интересный? Отнюдь нет.
Люди из гугла правы — лучше учить другой язык.
Если Java нравится — то рассматривайте её как одну из ступенек на пути к получению удовольствия. Будет проще «соскочить», когда поймёте окружающую картину.