Информация об изменениях

Сообщение Re: unordered_map тормозит? от 28.04.2020 17:42

Изменено 28.04.2020 17:46 sergii.p

Re: unordered_map тормозит?
Здравствуйте, f95.2, Вы писали:

F2>Решение на java отрабатывает за 1-2ms, а на плюсах — за 8...


на сколько я знаю, java использует "честный" хэш (грубо говоря, число 10 равновероятно преобразует в число в диапазоне от 0 до 2^32), а C++ — std::hash<int>{}(10) вернёт 10. Это может негативно сказываться на "диких" последовтельностях типа: 1, 2, 3, 4, 10, 11, 101, 102, 1001, 1002. Но по факту конечно это такую разницу дать не может.
Если предположить, что организован хэш в java и C++ примерно одинаково, то скорее всего, дело в аллоцировании памяти. А тут, как мне кажется, имеется классическая ошибка оценки скорости работы java приложения. Да, выделяется память в java быстрее. Но узкое место тут как раз — освобождение памяти. Если бы мы дождались отработки сборщика мусора, тут и увидели бы истинную картину. А это можно сделать только под нагрузкой. В простеньких проектах сборщик мусора вызывается уже после окончания работы приложения, когда замеры сделаны и фанаты явы радостно потирают руки.
Re: unordered_map тормозит?
Здравствуйте, f95.2, Вы писали:

F2>Решение на java отрабатывает за 1-2ms, а на плюсах — за 8...


на сколько я знаю, java использует "честный" хэш (грубо говоря, число 10 равновероятно преобразуется в число в диапазоне от 0 до 2^32), а в C++ — std::hash<int>{}(10) вернёт 10. Это может негативно сказываться на "диких" последовательностях типа: 1, 2, 3, 4, 10, 11, 101, 102, 1001, 1002. Но по факту конечно это такую разницу дать не может.
Если предположить, что организован хэш в java и C++ примерно одинаково, то скорее всего, дело в аллоцировании памяти. А тут, как мне кажется, имеется классическая ошибка оценки скорости работы java приложения. Да, выделяется память в java быстрее. Но узкое место тут как раз — освобождение памяти. Если бы мы дождались отработки сборщика мусора, тут и увидели бы истинную картину. А это можно сделать только под нагрузкой. В простеньких проектах сборщик мусора вызывается уже после окончания работы приложения, когда замеры сделаны и фанаты явы радостно потирают руки.