![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Ещё одна си-шная реализация против реализации maxim1000 ( по сравнению с Архимедом в ней букв мало, в варианте MAKcimа sigsegv ).
а теперь цифры(порежу всё что не real)
Итого. Вариант maxim1000 рулит. Во всех остальных букв много. В топку. с сортировкой сишный вариант ухудшается до 0.0056-0.0080[квотить не буду, лень] секунд. PS. заменил в maxim1000'вском варианте map'ы на unordered_map'ы. результаты ухудшились до ~0.0014. Это сообщение отредактировал(а) Mayk - 5.2.2008, 18:58 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Mayk, входных данных побольше бы надо, миллисекунды опасно приближаются к пределам статистической погрешности.
По хорошему, всегда надо делать серию и давать не только среднее, но и стандартное отклонение. Zed Shaw по этому поводу эмоционально писал. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Когда речь идёт о 0.0021 против 0.0009 в течение нескольких запусков --- не думаю что погрешности здесь исказят лидера. А ждать пока они отработают на миллион записей мне лень. 1000 записей весьма большая n. К тому же при увеличении n мой сишный код начнёт ещё больше тормозить из-за квардатичнго построение строк через string_to_hash'а (кстати, привет profiler). Переписывать во что-то более быстрое не получится не раздувая код(раздувать код -- лень). Сишный по компактности с STL'ным точно не сравнится. вообщем моё имхо --- фффтопку Варианты с >100 строками. Это сообщение отредактировал(а) Mayk - 5.2.2008, 19:24 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
||||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
В Boost 1.33, который в пакетах, нет foreach, поэтому вариант с бустом по совету Mayk пошёл в топку. Поскольку решили, что выруливает вариант maxim1000, буду сравнивать с ним.
GCC 4.1.2, Python 2.5.1, Athlon 64 3200+ Из флагов gcc только -O2. Входной файл на 100 тыс. элементов, ~2,5 Мб. Вывод в /dev/null. Серии по 12 запусков, первый не учитывается. C++ (STL): mean = 0.93, stddev = 0.04 Python: mean = 0.92, stddev = 0.09 Python (sort): mean = 1.11, stddev = 0.02 Итак, мой прогноз оправдался в точности:
Если в варианте C++ использовать unordered_map/hash_map, вероятно, будет прибавка в скорости, но вряд ли более чем двукратная. Та-ак, на чём бы ещё написать этот тестик ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
Mayk,
сортировочку у тебя можно в qsort() запихнуть будет быстрее в add_entry() вызывать постоянно malloc()...не слишком быстро Добавлено через 12 минут и 38 секунд вот мой исправленный вариант
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Про сортировку соглашусь. Самое смешное что в начале так и было, но я зачем-то убрал ![]() А на add_entry профайлер не советует обращать вниманин. По идее нужно string_to_hash чем-то нормальным заменить. Ибо n раз линейный поиск отстой ещё тот. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |