| 1 2 3 4 5 6 7 8 9 10 11 … 13 |
| boost - вон из профессии | |
| От: | Kluev | ||
| Дата: | 11.06.08 12:07 | ||
| Оценка: | 7 (2) +1 -14 ![]() | ||
| решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. велосипед мне пришлось написать т.к. strtod внутри вызывает strlen и производительность сильно падает на длинных строках. результаты, сек
тест:
19.06.08 15:05: Перенесено модератором из 'C/C++' — получился флейм — Кодт |
| Re: boost - вон из профессии | |
| От: | LaptevVV | ||
| Дата: | 11.06.08 12:15 |
| Здравствуйте, Kluev, Вы писали: K>решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. K>велосипед мне пришлось написать т.к. strtod внутри вызывает strlen и производительность сильно падает на длинных строках. K>результаты, сек K>
А попробуй еще стандартные строковые потоки -интересно сравнить. Я старый солдат и не знаю слов любви... Люди подобны океану: воды много, а напиться нельзя... |
| Re: boost - вон из профессии | |
| От: | php-coder | ||
| Дата: | 11.06.08 12:23 | ||
| Оценка: | 3 (1) +3 | ||
| Здравствуйте, Kluev, Вы писали: K>решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. Собственно, ничего нового и удивительного:
и далее:
Взято отсюда: http://sources.ru/wiki/doku.php?id=doc:cpp:boost:lexical_cast |
| Re: boost - вон из профессии | |
| От: | Alxndr | ||
| Дата: | 11.06.08 12:28 |
| Здравствуйте, Kluev, Вы писали: Тоже мне, открытие Америки |
| Re: мы мним себя в наполеоны...(с) | |
| От: | dip_2000 | ||
| Дата: | 11.06.08 12:41 |
| Здравствуйте, Kluev, Вы писали: Сделайте что-то такое же удобное, и безопасное |
| Re: boost - вон из профессии | |
| От: | Zigmar | ||
| Дата: | 11.06.08 12:42 | ||
| Оценка: | 5 (3) +4 | ||
| Здравствуйте, Kluev, Вы писали: K>решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. K>велосипед мне пришлось написать т.к. strtod внутри вызывает strlen и производительность сильно падает на длинных строках. K>результаты, сек K>
boost в данном случае даёт наиболее простое и универсальное решение, которое естественно, не самое быстрое. Если именно этот кусок у вас является баттлнеком — то и стоит оптимизировать, но для остальных 95% случаев, лучше воспользоваться более читабельным, надёжным и аккуратным решением. Мессадж в названии топика вообще глупый — практически для любой задачи, можно придумать специализированное решение более быстрое чем общее, и это не значит что ради сомнительных микрооптимизаций нужно выкинуть на помойку все удобные и универсальные инструменты. Конкретно на тему lexical_cast, никто не мешает сделать вам специализацию для вашего конкретного случая. И достоинство его не в том, что он должен, как вам кажется, на синтетическом тесте бить велосипед по скорости конвертирования стрингов в числа, а в том, что это удобный и понятный способ конвертировать любой тип данных в текстовое представление и наоборот. "To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword." -Seijuro Hiko, "Rurouni Kensin" |
| Re[2]: мы мним себя в наполеоны...(с) | |
| От: | Nuzhny | ||
| Дата: | 11.06.08 12:49 |
| Здравствуйте, dip_2000, Вы писали: _>Здравствуйте, Kluev, Вы писали: _>Сделайте что-то такое же удобное, и безопасное Вариация на тему:
Использовать так:
Можно сравнить по скорости. |
| Re: boost - вон из профессии | |
| От: | Кодт модератор | ||
| Дата: | 11.06.08 12:51 | ||
| Оценка: | 2 (2) ![]() | ||
| Здравствуйте, Kluev, Вы писали: Минус за глупое обобщение в сабже. Верёвка достаточной длины, чтобы обмотаться сверху донизу и наконец выстрелить в ногу. ... << RSDN@Home 1.2.0 alpha rev. 655>> Перекуём баги на фичи! |
| Re[2]: мы мним себя в наполеоны...(с) | |
| От: | Kluev | ||
| Дата: | 11.06.08 12:56 | ||
| Оценка: | -1 | ||
| Здравствуйте, dip_2000, Вы писали: _>Здравствуйте, Kluev, Вы писали: _>Сделайте что-то такое же удобное, и безопасное в этом нет ничего трудного, достаточно написать обертку вокруг strtod/strtol lexical_cast представляет из себя бездарно написанную обертку вокруг iostream, а iostream в конечном итоге все равно вызывает crt-шные strtod/strtol. |
| Re: boost - вон из профессии | |
| От: | korzh.pavel | ||
| Дата: | 11.06.08 12:57 |
| Здравствуйте, Kluev, Вы писали: K>решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. K>велосипед мне пришлось написать т.к. strtod внутри вызывает strlen и производительность сильно падает на длинных строках. [...] мне ещё из подобных средств нравится boost::spirit::real_parser — очень хорошо настраиваемый. Я один раз встроил его в один проект в котором активно делалось преобразование str->double Естественно выкинул всё лишнее, работал он быстрее strtod и надёжнее Автор: korzhik Дата: 08.08.05 |
| Re[2]: boost - вон из профессии | |
| От: | Kluev | ||
| Дата: | 11.06.08 13:07 | ||
| Оценка: | +2 -8 | ||
| Здравствуйте, Zigmar, Вы писали: Z>boost в данном случае даёт наиболее простое и универсальное решение, которое естественно, не самое быстрое. Вообще-то нет никаких причин которые мешают написать его по человечески и эффективно. Вместо этого нагромождение быдлокода, весьма характерное для boost. |
| Re[2]: boost - вон из профессии | |
| От: | CreatorCray | ||
| Дата: | 11.06.08 13:14 |
| Здравствуйте, LaptevVV, Вы писали: LVV>А попробуй еще стандартные строковые потоки -интересно сравнить. Тоже скорость кошмарная. ... << RSDN@Home 1.1.4 stable SR1 rev. 568>> |
| Re: boost - вон из профессии | |
| От: | CreatorCray | ||
| Дата: | 11.06.08 13:14 |
| Здравствуйте, Kluev, Вы писали: K>решил сделать небольшой тест. померял скорость работы boost::lexical_cast, strtod и своего велосипеда. K>велосипед мне пришлось написать т.к. strtod внутри вызывает strlen и производительность сильно падает на длинных строках. K>результаты, сек K>
Агаа У меня такая же хрень — велосипеды рулят.
Для int поскромнее — всего в 4 раза разница ... << RSDN@Home 1.1.4 stable SR1 rev. 568>> |
| Re[3]: boost - вон из профессии | |
| От: | Zigmar | ||
| Дата: | 11.06.08 13:21 |
| Здравствуйте, Kluev, Вы писали: Z>>boost в данном случае даёт наиболее простое и универсальное решение, которое естественно, не самое быстрое. K>Вообще-то нет никаких причин которые мешают написать его по человечески и эффективно. K>Вместо этого нагромождение быдлокода, весьма характерное для boost. Ну и приведите пример универсального решения, которое будет эффективно делать то-же, что и lexical_cast. Не забывая, естественно про поддержку custom types. И вообще, прежде чем наезжать на буст, я бы посоветовал, скажем, заменит строчку "3.1415" на экспоненциальную нотацию или на "NAN" и посмотреть это схавает ваш хвалёный велосипед. "To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword." -Seijuro Hiko, "Rurouni Kensin" |
| Re[3]: мы мним себя в наполеоны...(с) | |
| От: | dip_2000 | ||
| Дата: | 11.06.08 13:23 |
K>Здравствуйте, dip_2000, Вы писали: _>>Здравствуйте, Kluev, Вы писали: _>>Сделайте что-то такое же удобное, и безопасное K>в этом нет ничего трудного, достаточно написать обертку вокруг strtod/strtol K>lexical_cast представляет из себя бездарно написанную обертку вокруг iostream, K>а iostream в конечном итоге все равно вызывает crt-шные strtod/strtol. я вас уверяю, по русски, писать гораздо проще(и безопаснее :D ) чем на с++ |
| Re[4]: boost - вон из профессии | |
| От: | Kluev | ||
| Дата: | 11.06.08 13:48 | ||
| Оценка: | +1 | ||
| Здравствуйте, Zigmar, Вы писали: Z>Здравствуйте, Kluev, Вы писали: Z>>>boost в данном случае даёт наиболее простое и универсальное решение, которое естественно, не самое быстрое. K>>Вообще-то нет никаких причин которые мешают написать его по человечески и эффективно. K>>Вместо этого нагромождение быдлокода, весьма характерное для boost. Z>Ну и приведите пример универсального решения, которое будет эффективно делать то-же, что и lexical_cast. Не забывая, естественно про поддержку custom types. И вообще, прежде чем наезжать на буст, я бы посоветовал, скажем, заменит строчку "3.1415" на экспоненциальную нотацию или на "NAN" и посмотреть это схавает ваш хвалёный велосипед. lexical_cast не универсален. например понадобится конвертнуть строку с парой чисел разделенных запятыми. lexical_cast — облом, iostream — облом. а старые добрые strtod/strtol вполне подойдут (их только нелепый strlen внутри портит). по настоящему универсальным решением было бы семейство "низкоуровневых" перегруженных функций для разбора чисел + шаблонная обертка вокруг.
для еще более полной универсальности вместо const char* можно использовать итераторы. |
| Re[4]: мы мним себя в наполеоны...(с) | |
| От: | Kluev | ||
| Дата: | 11.06.08 14:05 | ||
| Оценка: | +1 | ||
| Здравствуйте, dip_2000, Вы писали: на бaзе банальных strtod/l
|
| Re: boost - вон из профессии | |
| От: | nen777w | ||
| Дата: | 11.06.08 14:07 |
| У меня lexical_cast трудится в калбеках от FLEX парсера. ИМХО для таких задач возможности lexical_cast это самое то. |
| Re: premature optimization - туда же | |
| От: | Аноним 252 | ||
| Дата: | 11.06.08 14:32 | ||
| Оценка: | +2 -2 ![]() | ||
| Re[2]: boost - вон из профессии | |
| От: | Sergey | ||
| Дата: | 11.06.08 15:16 |
| korzh.pavel пишет: > мне ещё из подобных средств нравится boost::spirit::real_parser — очень > хорошо настраиваемый. > Я один раз встроил его в один проект в котором активно делалось > преобразование str->double > Естественно выкинул всё лишнее, работал он быстрее strtod и надёжнее Со спиритом другая проблема — фиг поймешь, где их глобальный мьютекс используется, а где нет. Posted via RSDN NNTP Server 2.1 beta На улицах злая гопота, в офисах злые гомосеки. Как выжить в этом городе простому человеку? |
| 1 2 3 4 5 6 7 8 9 10 11 … 13 |