пятница, 7 августа 2009 г.

[comp.flame] Маразм крепчал: производительность получилась несколько более низкой

Зашел сегодня на linux.org.ru, увидел новость о переписывании кода SQLite на C#/Mono. Прочитал и охуеофигел:

Noah Hart осуществил порт Sqlite на C# путем переписывания оригинальной библиотеки строчка за строчкой. При этом производительность получилась несколько более низкой, чем у оригинального кода - порт примерно в 5 раз медленнее (это означает, что он способен обработать примерно 1.5 миллионов операций типа SELECT или 300 000 операций типа INSERT за секунду - очень достойные результаты).

Блин, хочу жить в мире, где пятикратные тормоза называются “несколько более низкой” производительностью! Может для этого достаточно стать C#/Mono программистом? Тогда все заботы по написанию производительного кода, по профилированию и оптимизации программ уйдут сами собой. Будет всего лишь несколько более низкая производительность и все. Лепота!!!

Справедливости ради нужно сказать, что такой перл выдал переводчик новости. Поскольку в оригинальном варианте от Мигеля де Иказы говорится более спокойно:

The frequently asked questions on the web site talks about performance (it is about 5 times slower than native code, but still, it can do 1.5 million selects per second, 300k inserts per second).

Т.е. да, производительность сосет по полной, но тем не менее 1.5M select-ов и 300k insert-ов в секунду могёт.

PS. Кстати интересно, на каких-таких insert-ах SQLite показывает 300k/sec? Я год назад запарился на SQLite делать поддержку 20K транзакций в секунду, поскольку как только в SQLite появляется транзакция, то производительность падает на порядки. Пришлось объединять сотни вставок в большие транзакции, чтобы минимизировать их количество. Или же они считают количество insert-ов в одной транзакции? Или вообще в одной транзакции зафиксировали 10K записей, экстраполировали результат и получили 300k?

4 комментария:

Unknown комментирует...

Я думаю что они считали количество инсертов в одной транзакции, потому что если на каждый инсерт делать транзакцию то там их в секунду штук 5 будет наверно, да и не делает так никто.
PS
Евгений, очень интересный блог, правда редко комментирую.

eao197 комментирует...

У меня еще есть подозрение, что они какой-то inmemory вариант БД используют. И какую-то очень-очень простую табличку без индексов.

jazzer комментирует...

И вроде как это вообще неоптимизированная версия.

eao197 комментирует...

Первые версии не бывают оптимизированными. Хотя в данном случае идет построчный перевод. Так что фиг знает, работа с диском должна была быть нормальной (если она вообще выполнялась в бенчмарках).

Но я говорил не о самом порте и о его скорости. А о том, как о нем говорят. Вот это, действительно, маразм.