thedeemon: (Default)
[personal profile] thedeemon
Решил на июньском конкурсе _darkus_'a испытать в деле язык D, о котором недавно читал книжку Александреску*. Первый вариант, написанный без мыслей об оптимизации (кроме общего выбора алгоритма), работает на моем рабочем Core 2 Quad 59 секунд. Стал пробовать его ускорить и быстро увидел, что почти все время уходит на сборку мусора, т.к. в процессе вычислений создается много небольших временных данных. Аналогичный вариант на окамле, также бездумно выделяющий много раз память в процессе выполнения, отрабатывает за 29 секунд. Хоть мелких телодвижений там больше, и арифметика в окамле не супер быстрая, а общая скорость все равно двое больше за счет быстрого generational сборщика мусора. В D сборщик примитивней - без поколений, без компактификации, частично консервативный и требующий больше усилий для отличения указателя от неуказателя. Если же в решении на D в основном вычисляющем цикле избавиться от лишних выделений памяти, задействовав массив на стеке и более примитивный код, временно отключить GC в момент парсинга входных данных, да еще задействовать модуль parallelism из стандартной библиотеки, то получится вариант, который у меня отрабатывает полностью за 4.4 секунды.

* Обнаружил для себя хороший способ не просто скачать PDF'ку, но и прочитать ее целиком - нужно заплатить за нее деньги.

Date: 2012-06-13 07:55 am (UTC)
From: [identity profile] dlebedev8.livejournal.com
Вы про D1 или D2? Тоже когда-то присматривался к этому языку, но разделение его на две несовместимые ветки отбило всякое желание изучать его дальше.

Date: 2012-06-13 09:10 am (UTC)
From: [identity profile] max klyga (from livejournal.com)
Там D2 код. Сейчас ветка D2 называется просто D, а D1 со следущего года прекратит получать обновления, так что с разделением тема закрыта.

Date: 2012-06-13 10:35 am (UTC)
From: [identity profile] thedeemon.livejournal.com
D2. D1 я не трогал и не вижу смысла это делать.

Profile

thedeemon: (Default)
Dmitry Popov

May 2025

S M T W T F S
    123
45678910
11 121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 05:42 am
Powered by Dreamwidth Studios