>хотел сделать boost::lexical_cast еще быстрее :))) Вообще удивительно, что схема горнера вычисления полинома A0 + 10*A1 + 100*A2 + ... превращается из сотни asm-команд в сотни тысяч, возможно даже с переключеним в ядро OS (локали, выделение памяти, конвертация кодировок).
Перемудрили с абстракцией в streams в С++, хотя во многих динамических языках бывают посильнее ляпы. В ядро действительно может переключиться, прочитать файлик с данными. Да и выделение памяти для std::string тоже может.
Если читал статью про оптимизацию, я упоминал такой интерфейс:
boost::array itolit_classic(int); // и тд для других целых типов
Расшифровывается integer to literal, может быть не самая удачная аббревиатура. Где-то лежит у меня недоделанная реализация, даже пытался низкоуровневую оптимизацию делать.
>Если читал статью про оптимизацию Сорри, не знал про. Правда, в любом случае она мне вряд ли окажется полезной, так как я подозрительно отношусь к любой сложной конструкции.
Comments 5
:)))
Вообще удивительно, что схема горнера вычисления полинома A0 + 10*A1 + 100*A2 + ... превращается из сотни asm-команд в сотни тысяч, возможно даже с переключеним в ядро OS (локали, выделение памяти, конвертация кодировок).
..., кроме слишком большого слоёв абстракции.
Reply
В ядро действительно может переключиться, прочитать файлик с данными. Да и выделение памяти для std::string тоже может.
Если читал статью про оптимизацию, я упоминал такой интерфейс:
boost::array itolit_classic(int);
// и тд для других целых типов
Расшифровывается integer to literal, может быть не самая удачная аббревиатура. Где-то лежит у меня недоделанная реализация, даже пытался низкоуровневую оптимизацию делать.
Reply
Сорри, не знал про. Правда, в любом случае она мне вряд ли окажется полезной, так как я подозрительно отношусь к любой сложной конструкции.
Reply
Reply
Reply
Leave a comment