Ну, апологеты Си, Гитлер вам капут!

Dec 28, 2017 12:08

Щас точки над Ё расставлять буду.

Как правильно измерять производительность программы, написанной на каком-то языке программирования? Ну, для начала, взять нормальный, хорошо изученный алгоритм. Например, любимая многими сортировка пузырьком (bubble sort) не годится. Почему? Потому что это настолько идиотский алгоритм, что он сбивает с толку Read more... )

программирование, на вентилятор, #include, компьютерное

Leave a comment

Comments 11

(The comment has been removed)

nlothik December 28 2017, 19:29:07 UTC
Вот тут уже получилось заметно хуже Джавы. В среднем получилось 17.75 секунд (min. 17.42 max. 18.25). Причём это не на виртуалке, а на материнской ОС Windows. Надо будет попробовать под Mono её на Убунте зафигарить, аж самому стало интересно.

Reply

nlothik December 28 2017, 19:36:20 UTC
Под Mono на виртуалке получилось 18.4 секунды в среднем. Ожидаемое ухудшение. Даже удивлён, что не получилось хуже -- оказывается, Mono не так уж и плоха.

Reply


relyef December 28 2017, 20:03:35 UTC
Попробуйте в качестве чОрной магии использовать thread-local memory management вместо глобальных malloc/free, разница должна быть весьма ощутимой. Disclaimer- для меня это аргумент в пользу Java, где можно обойтись без бубна.

Reply

nlothik December 28 2017, 20:07:27 UTC
Дак я и не использую malloc/free, сразу создаю всё нужного размера.

Reply

relyef December 28 2017, 20:26:01 UTC
Да, я не посмотрел сразу на код, и мой комментарий скорее относился к "общему случаю". В данном было бы интересно посмотреть, как С++ vs Java используют виртуальную память, и, конкретно, swap. Запросто может оказаться, что JVM держит все страницы в памяти, а С++ передает весь контроль в ОС, которая может с ними делать, что ей вздумается

Reply

nlothik December 29 2017, 02:26:25 UTC
Попробовал поглядеть -- в целом, конечно, Джава отжирает довольно много, там сама jvm занимает внушительно места. Сишная же программа отъедает мало -- там ведь только массив с 100 000 элементами, по 4 байта на элемент получается ~400 килобайт. Примерно столько оно и отъело (сколько отъела Джава щас навскидку не скажу, но минимум раза в три больше).

Сомневаюсь, что при таком низком потреблении памяти оно вообще уходило в своп.

Reply


brmail December 28 2017, 20:48:43 UTC
проблема в том, что ты просто сравнил насколько по разному работает с выделенным под аррей куском памяти компилятор с и джавы.
В каком то случае это показатель, в другом случае будет по другому.

Reply

nlothik December 28 2017, 20:52:39 UTC
Ну давай другой алгоритм чего-нибудь проверим, разве я против.

Reply

brmail December 28 2017, 22:52:24 UTC
да хрен его знает, что там реально надо. Чаще всего тестируют какую то конкретную задачу. Иначе все равно получится сравнения теплого с мягким

Reply

laoxia December 28 2017, 23:13:04 UTC
да ничего подобного, никакого теплого с мягким. Тесты работают. Но стоит понимать, что результат не сравнение скорости, а то как джавистов плющит, доказывают, что джава быстрая, и задачу специальную подберут, и кучу условий придумают. И как им это безразлично напишут (если кто их ловкость рук заметит), и это в дополнении к простыням кода который надо выполнять на шарообразном компьютере в виртуальной машине), причем код на сях пишут с неповторимым джава акцентом. И тэ дэ.

По теме: я так понимаю время что jvm заводилась включено в эти 10 секунд?

Reply


Leave a comment

Up