All Projects → covrom → highloadcup2018

covrom / highloadcup2018

Licence: MIT license
HighLoad Cup 2018

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to highloadcup2018

2017-highload-kv
Курсовой проект 2017 года курса "Проектирование высоконагруженных систем"
Stars: ✭ 26 (+85.71%)
Mutual labels:  highload
highload-cup
Submission for mail.ru HighLoad Cup august 2017
Stars: ✭ 12 (-14.29%)
Mutual labels:  highloadcup
jsberry
JSBerry is open source modular simple architecture for building Node.js applications.
Stars: ✭ 85 (+507.14%)
Mutual labels:  highload
do
Simplest way to manage asynchronicity
Stars: ✭ 33 (+135.71%)
Mutual labels:  highload
highloadcup
No description or website provided.
Stars: ✭ 13 (-7.14%)
Mutual labels:  highloadcup
cups-rl
Customisable Unified Physical Simulations (CUPS) for Reinforcement Learning. Experiments run on the ai2thor environment (http://ai2thor.allenai.org/) e.g. using A3C, RainbowDQN and A3C_GA (Gated Attention multi-modal fusion) for Task-Oriented Language Grounding (tasks specified by natural language instructions) e.g. "Pick up the Cup or else"
Stars: ✭ 38 (+171.43%)
Mutual labels:  cup
TOAD
AI-based pathology predicts origins for cancers of unknown primary - Nature
Stars: ✭ 138 (+885.71%)
Mutual labels:  cup
bicycle-mrhlc
Мое решение для mail.ru'шного HighLoad Cup 2017
Stars: ✭ 26 (+85.71%)
Mutual labels:  highloadcup
json-parser
🌐 A JSON lexer and parser built according to the official ECMA-404 JSON Data Interchange Standard
Stars: ✭ 24 (+71.43%)
Mutual labels:  cup
bx-data
Удобные классы для 1C-Bitrix.
Stars: ✭ 24 (+71.43%)
Mutual labels:  highload
hlhelpers
Набор методов для работы с highloadblock 1С-Битрикс
Stars: ✭ 18 (+28.57%)
Mutual labels:  highload
metacom
RPC communication protocol for Metarhia stack 🔌
Stars: ✭ 42 (+200%)
Mutual labels:  highload
highloadcup2017
No description or website provided.
Stars: ✭ 12 (-14.29%)
Mutual labels:  highloadcup

github.com/covrom/highloadcup2018

Мое решение для Highload Cup 2018.

Техническое задание

В финале https://highloadcup.ru/ru/rating/ мое решение занимает 28 место с ~410 сек. штрафа и потреблением памяти 1,6-1,7 Гб.

Ноу-хау решения стал разработанный универсальный движок columnstore (db/column.go) для любого содержимого колонок и быстрые intersect/merge-итераторы без аллокации памяти (db/coliter.go).

Все алгоритмы хэш или основанные на деревьях - не пригодились по причине того, что они сильно тратят память на указатели (именно на сами указатели, а не на данные), которые дополнительно еще обрабатывает и GC. Из-за этого было принято решение реализовывать алгоритмы на массивах, без указателей.

Для сети использовался fasthttp и fasthttprouter без переделок.

В папке docs содержатся материалы по inmemory column - базам данных.

Содержимое некоторых пакетов:

  • avltree - содержатся хорошие примеры реализации avl-деревьев, но они не пригодились при решении задачи.
  • flysort - содержится бенчмарк алгоритмов добавления и сортировки "на лету" - линейный поиск и вставка, бинарный поиски и вставка, мин-хип. Мин-хип был использован в пакете suggest, однако надо помнить, что из-за отсутствия упорядоченности по уровням он выстраивает неточный список первых минимальных при принудительном ограничении длины массива, на котором он строится, и подходит только для поиска максимальных N элементов. Т.о. ограниченный мин-хип подходит только для поиска максимальных и упорядоченных по возрастанию N значений, а не минимальных.
  • gentest - лежит утилита обработки исходных данных, для подсчета некоторых статистик.
  • intsearch - содержится бенчмарк различных вариантов реализации бинарного поиска в сортированном массиве. Безусловный победитель - алгоритм на ассемблере. В ходе исследований выяснились разные интересные особенности компилятора, см. например, golang/go#30366
  • jumphash - содержится хэш-функция, которая не пригодилась.
  • treebidimap - содержится алгоритм двунаправленной мапы, который тоже не пригодился.

Отдельная благодарность Сергею https://github.com/bochsdbg за участие в исследовании некоторых особенностей компилятора при boundary check.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].