Как стать автором
Обновить
26
0
Ратьков Дмитрий @dmrt

Вэб-программист

Отправить сообщение
articles.rvncerr.org/how-to-chose-an-in-memory-nosql-solution-performance-measuring вот здесь есть статья по мотивам доклада.
Пора, пробовал, написал :)
НЛО прилетело и опубликовало эту надпись здесь
почти 100%

Это ваши домыслы, или статистикой подкрепить можете? Давайте откроем список победителей ACM ICPC и посмотрим, сколько же человек оказалось за границей.


  • Года 2000 и 2001: Николай Дуров и Андрей Лопатин приняли участие в создании социальной сети Вконтакте, где и работали, пока Павел Дуров не ушёл делать Телеграм. При этом второй, видимо, вернулся во [вконтакте],
    (https://secretmag.ru/cases/interview/lopatin.htm) и активно занимается обучением новых чемпионов (он тренер прошлогодних абсолютных чемпионов, занявших 4-ое место в этот раз). Виктор Петров, согласно профилю в всё той же социальной сети, живёт в Петербурге и работает в лаборатории Чебышёва при альма-матер. Олег Етеревский работал в Питерском офисе Google, пока последний не прекратил разработку в России.
  • 2004: Павел Маврин тоже живёт в России и активно преподаёт как школьникам, так и студентам. Согласно википедии, так же трудится на благо своей альма-матер. Дмитрия Павлова я запишу в уехавшие, хотя имя-фамилия распространённые и я мог ошибиться. Сергей Оршанский, судя по профилю вконтакте, тоже уехал.
  • 2006: Роман Алексеенков, Игорь Кулькин и Иван Романов уехали
  • 2008: Федор Царев и Дмитрий Абдрашитов, судя по ВК, остались в России, а Дмитрий Паращенко уехал в 2012-ом году.
  • 2009: Владислав Исенбаев уехал, Максим Буздалов и Евгений Капун остались.
  • 2012: Нияз Нигматуллин остался, Михаил Кевер, как я понимаю, уехал.

Статистику по следующим годам подводить не буду, т.к. во-первых, имеющаяся уже достаточно репрезентативна, а, во-вторых, многие участники соревнований 2013-2017 годов все ещё учатся.


Итого 9 уехавших и 9 оставшихся. Далековато до "почти 100%", не находите?

В вопросе ArrayList vs LinkedList очень важно ещё и понимать что элементы ArrayList`а хранятся массивом, т.е. линейно в памяти, и можно довольно удачно загрузить кусок массива в кэш процессора, что очень круто скажется на производительности.
советую почитать: kjellkod.wordpress.com/2012/08/08/java-galore-linkedlist-vs-arraylist-vs-dynamicintarray/
Просто оставлю это здесь
Как стать топовым разработчиком, уделяя этому только 8 рабочих часов? Для начала:
1. как следует изучить фундаментальную computer science;
2. регулярно практиковаться;
3. постоянно изучать что-то новое.

И здесь нас ждут подводные камни:

1. Если не пройден первый пункт во время учебы, его приходится проходить после того, как ты стал работать. В свободное от работы время, разумеется.

2. Если структура рабочего времени подразумевает, что широкой практики нет, только выполнение однотипной monkey business (скажем, сопровождение чужого кода, багофикс) и практиковаться в проектировании «с нуля». допустим, негде — опять у меня плохие новости: это нужно будет делать в свободное от работы время.

3. Постоянно изучать что-то новое можно, если на работе постоянно есть парочка «свободных» для этого часов. Постоянно, КАРЛ. Если нет — опять же, нужно уделять свободное время. Нерабочее.

Вывод: если окружающая среда, образование, условия «выращивания» при прочих равных оказалась хуже, чем у других, а амбиции остались на уровне «как у всех», будьте любезны или тратить своё личное время или забыть про амбиции.

Далее. Разработчик в идеале должен быть собран и сконцентрирован. А попробуй-ка не рассыпать в голове пятимерные абстракции, когда девушка регулярно пишет в скайп мимимишности и требует ответа. Кхм.

Матерясь про себя, перечитываешь «Поток» Чиксентмихайи, и задумываешься: ставить крест на личной жизни, ставить крест на работе или попробовать соблюсти баланс? Правильно, да: соблюсти баланс — грань всегда можно найти, было бы желание.

И именно здесь, пока ты занят поисками баланса, в комнату с криком «А вот я же говорил!» врывается разработчик Вася, у которого ващще нет таких проблем, который уделяет личное время личному развитию, инвестируя в себя, и становится «топовым» не через десять лет, как ты, а через шесть. Профит? Профит.
Мне всегда нравилось представлять, что он он к нам по ошибке попал из будущего, как в одной фантастической книжке из детства.

Кстати, впервые о Рамануджане прочел в книге Последняя теорема Ферма, где ему посвящена отдельная глава — саму книгу очень рекомендую. (Перевод на русский)
Мне кажется, что самое главное отличие — это Reified Generics в котлине, которых вообще нет в джаве.
Так как часть статьи посвящена конфигурации, от себя еще добавлю ссылку на статью Дейва Чейни. Смысл ее в том, что параметры конфигурации можно делать функциями, чтобы позволить пользователю библиотеки самому решать, какое поведение ему нужно в той или иной ситуации. Вот, например, использование этого подхода, в redigo, а вот пример из модуля net/http стандартной библиотеки.
На самом деле, тест хороший. И хоть и назван «ненаучным» он показывает явно, что golang + leveldb в каких-то кейсах быстрее Tarantool.

При этом у Tarantool перед goland + leveldb есть вполне себе очевидные преимущества:

1. Обновление кода без перезагрузки сервера
2. Хранимые процедуры
3. Репликация master-slave и master-master (важное преимущество — ибо с leveldb придется данные куда-то как минимум rsync'ать, ибо иначе стремно)
4. Другие СУБД-фишки (транзакции, например)
5. Поддержка других языков кроме Lua (сейчас это C и Swift, в будущем появятся и другие)

Кроме того, очевидно, что выставлять http-сервер на go в интернет плохо, т.к. надо терминировать SSL, надо делать различные административные действия (типа как rewrite и прочие), надо хорошо обрабатывать медленных клиентов, надо отдавать статику в конце концов. Со всем этим как мы прекрасно знаем прекрасно справляется nginx. Т.е. ставить nginx перед своим любимым http-сервером — это сейчас самый массовый кейс. А раз спереди ставится nginx, то его можно пускать в Tarantool не по медленному http, а по быстрому бинарному протоколу, например, как это было сказано тут: https://habrahabr.ru/company/mailru/blog/272141/

Кажется, что такая связка должна уделать golang, мы это обязательно протестируем, используя ваши тесты и выложим результаты.

Кроме того, если в app server'е есть внутри хранилище, то надо чтобы кто-то сверху роутил запросы на слейв, если упал мастер. В случае Тарантула есть стандартный nginx-модуль, который умеет это делать (см. статья выше). А в случае go + leveldb что делать? Плюс, как я сказал уже выше, репликацию leveldb придется писать руками.

В целом же, спасибо, что показали, что http-сервер в Тарантуле еще далек по производительности от совершенства. Мы стремимся к тому, чтобы даже на одном ядре работать быстрее чем все аналоги на всем сервере. Будем улучшать! :)
Я об этом говорил авторам тарантула чуть ли не с самого начала: посмотрите на го :).

С другой стороны, они все же немного о разном. В tarantool хранимые процедуры на lua и их можно (атомарно) обновлять без перезагрузки сервера и не теряя кеши. Если бы такое можно было делать в golang, то наверное ниши для тарантула не осталось бы. А пока что go не может целиком заменить ни nginx+lua, ни tarantool+lua, к сожалению :(.
Скажите, а есть ли аналог команды redis PIPELINE в tarantool ( http://redis.io/topics/pipelining )? Как-то грустно напрягать сеть 10000 раз в секунду и писать параллельные программы ради batch actions, когда можно сразу выполнить 10000 вставок одной передачей данных.
Кроме того, без этой команды вы ставите сервера в неравные условия — мне кажется, у вас network stack ограничивает производительность в половине примеров.
слушайте, я вам задал вполне конкретные вопросы, а вы мне в ответ философию какую-то.

Давайте я совсем просто переформулирую:
1. Как сделать рефлекшен по куче перегруженных методов?
2. как типизировать кортежи (ruple, row), прилетающие из БД?
3. зачем вендору вкладываться в развитие языков, на которые никто не пишет?
4. как можно сравнивать «клевый» язык, которым мало кто пользуется с языком, которым пользуются десятки миллионов людей?
5. насчет языков и хабраопроса — вы знаете, что такое «survivor bias»?
Конкретная Математика — это главный сборник математики именно для программистов. Это математическая база, которая нужна для анализа алгоритмов. Но там нет самих алгоритмов. По алгоритмам мне лично очень нравится Алгоритмы: построение и анализ. Ну и Искусство Программирования Кнута, конечно.
НЛО прилетело и опубликовало эту надпись здесь

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность