Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
СиПиПиGTK -Си QT - проприетарное поделие MFC - убожество. точка. Жалкая попытка натащить на Win Api сипипи. Это не ОО-библиотека. ПС. Почему-то все "крупные фирмы, разрабатывающие ПО на С++, не используют ее, а разрабатывают собственную" WTL - попытка заменить убожество сверху. STL - только через 5 лет дядя Степанов осили написать для СиПиПи стандартную библиотеку. до этого пользы от этого языка было никакой. MFC - повторяемся. Qt - вроде как и вовсе бесплатно стало. MFC - согласен, лажа. STL - нормальная библиотека. А ещё есть boost! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2009, 15:50 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
maytonGluk (Kazan)В это можно верить или нет, но Кнут разработал TEX специально чтобы верстать свои книги.Так что обошлось без фотографа Специально поднял иторические сведения. Кнут создал первую версию своего ТеКса в 1977 году. Так-что он никак не мог на нём делать книги в 60х. Да и у меня изначально не было никаких сомнений в том, что книги не верстали на тектовых редакторах в то время. Ссылку не дам, но в каком-то из предисловий говорилось, что прежде чем сесть за верстку "Искусства программирования", Кнут довел до ума TEX. И было это явно не в 60 году. Возможно имелось в виду не первое издание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2009, 16:25 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Можно сказать что провокация топикстартера удалась :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2009, 17:57 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
vazhneckiМожно сказать что провокация топикстартера удалась :) Ну и к чему это было сказано? Тут же не ПТ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2009, 07:31 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
maytonGluk (Kazan)В это можно верить или нет, но Кнут разработал TEX специально чтобы верстать свои книги.Так что обошлось без фотографа Специально поднял иторические сведения. Кнут создал первую версию своего ТеКса в 1977 году. Так-что он никак не мог на нём делать книги в 60х. Да и у меня изначально не было никаких сомнений в том, что книги не верстали на тектовых редакторах в то время. Ссылку, пожалуйста. Чуть чаще чем в каждом мануале по TeX говорится о том, что первый том Кнута верстали издатели, и именно их некачественная работа заставила разработать эту систему. Начиная со второго тома Кнут использовал только тех. По своему опыту скажу что хоть система хоть и не без граблей, но это единственная годная программа для верстки, идеологически (отделяет содержание документа от оформления). Программа работала и работает на любой системе, начиная с доса и os/2 и заканчивая современными линуксами и юниксами, и win nt, это мс офис 2007 требует производительности как у системы управления спутниками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2009, 09:56 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Я не хочу с вами спорить. Для меня в этом вопросе всё предельно ясно. Я всего-лишь указал на на историческое несоответствие. Это равносильно тому что заявить о использовании реактивных самолётов в Первой Мировой войне. Ну а ссылки можете легко нагуглить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2009, 10:35 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
авторСиПиПи, Вот код на c++ который создает 10 000 000 объектов за 0.27 секунды ( на моем компе ). Если не тяжело приведи плиз код на шарпе который сделает это быстрее #include <iostream> #include <time.h> const int NUM = 10000000; class test { private: int a,b,c; public: test(int aa):a(aa),b(aa),c(aa){} void print() { std::cout << a << " " << b << " " << c << std::endl; } ~test(){} }; int main() { clock_t t1 = clock(); test *big_arr = (test *)new char[ NUM * sizeof(test)]; if( big_arr ) { for( int i = 0; i< NUM; i ++ ) { new(big_arr+i)test(i); } /* for( int i = 0; i< NUM; i ++ ) { big_arr[i].print(); } */ for( int i = 0; i< NUM; i ++ ) { big_arr[i].~test(); } delete []((char *)big_arr); std::cout << "Work time = " << ((double)(clock() - t1 )/ (double) CLOCKS_PER_SEC ) << std::endl; } else std::cout << "Not enought memory" << std::endl; return 0; } Цитата с самого начала темы... А кто-нибудь этот код выполнял? Или хоть по пялился внимательно? Дык вот, никакие 100000000 объектов динамически (в хипе) тут не создаются. Единственный new здесь создает массив, где лежат объекты (не указатели на объекты), а единственный delete грохает весь массив. В цикле же выполняются только конструкторы и деструкторы (оптимизатор второй цикл вообще киляет, т.к. деструктор пустой). Если же написать все по честному, типа: #include <iostream> #include <time.h> const int NUM = 100000000; class test { private: int a, b, c; public: test() {} test(int aa) :a(aa), b(aa), c(aa){} void print() { std::cout << a << " " << b << " " << c << std::endl; } ~test(){} }; int main() { clock_t t1 = clock(); test** big_arr = new test*[NUM]; if (big_arr) { for (int i = 0; i< NUM; i++) { big_arr[i] = new test(i); } for (int i = 0; i< NUM; i++) { delete big_arr[i]; } delete[] big_arr; std::cout << "Work time = " << ((double)(clock() - t1) / (double)CLOCKS_PER_SEC) << std::endl; } else std::cout << "Not enought memory" << std::endl; return 0; } То расклад совсем другой... new срабатываем мгновенно, а вот конца цикла 100 000 000 с delete (на MSVC 2013 64бит) я вообще не дождался. Цикл c 1 000 000 delete занял 3 минуты. Из этого следует только то, что у MSVC г-нный менеджер памяти, и в MSVC не стоит использовать new/delete в циклах. Причем г-ным обзываю обоснованно, т.к. аналогичная задачка (100 000 000 new/delete), например, в Delphi (64бит) решается за 12 сек (6 сек new, 6 сек delete) без оптимизатора. type TTestMem=class a,b,c: integer; end; procedure TForm1.Button1Click(Sender: TObject); var a: array of TTestMem; j: integer; begin SetLength(a,100000000); for j:=0 to Length(a)-1 do a[j]:=TTestMem.Create; for j:=0 to Length(a)-1 do a[j].Free; a:=nil; end; Очень хочется верить, что это проблема только MSVC и есть компиллеры C++ (особенно интересно под windows) в которых можно спокойно пользоваться динамической памятью (heep) в критическом блоке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2017, 23:14 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichaleаналогичная задачка (100 000 000 new/delete), например, в Delphi (64бит) решается за 12 сек (6 сек new, 6 сек delete) без оптимизатора. Да, вот только ты в Дельфи использовал почему-то умолчательный конструктор вместо конструктора с тремя присваиваниями внутри. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2017, 23:22 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
авторnikichale аналогичная задачка (100 000 000 new/delete), например, в Delphi (64бит) решается за 12 сек (6 сек new, 6 сек delete) без оптимизатора. Да, вот только ты в Дельфи использовал почему-то умолчательный конструктор вместо конструктора с тремя присваиваниями внутри. да, и добавление 3х присвоений затормозит выполнение на 3мин * 10, как в MSVC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2017, 23:27 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichaleда, и добавление 3х присвоений затормозит выполнение на 3мин * 10, как в MSVC А чего ты ожидал от обращений к невыравненной памяти за пределами процессорного кэша?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2017, 23:36 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, А чего ты ожидал от обращений к невыравненной памяти за пределами процессорного кэша?.. ну добавил я 3 присвоения - естественно на время не сказалось вообще. Да и странно это было бы, new и delete (Create/Free) все таки весят поболе, чем 3 присвоения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 10:26 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichaleДык вот, никакие 100000000 объектов динамически (в хипе) тут не создаются Так не 100000000, не объектов, или не в хипе ? Что конкретно из этого не вполняет код? :) Впрочем даже твой код при компиляции без оптимизации выполняется за 4.5 сек. HP:~/dev/$ g++ test.cpp -o test && ./test Work time = 4.52119 HP:~/dev/$ uname -a Linux HP 3.13.0-133-generic #182-Ubuntu SMP Tue Sep 19 15:49:21 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux HP:~/dev/$ gcc --version gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. HP:~/dev/$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz stepping : 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 13:47 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
сlihlt Так не 100000000, не объектов, или не в хипе ? Что конкретно из этого не вполняет код? :) Пример создает 100000000 раз - да, объектов - да, в хипе - да, но пожалуй не динамически, т.к. new/delete выполняется 1 раз в начале и в конце (хитрый new в цикле, как я понимаю память не выделяет). Очень рад за gcc, что имеет хороший менеджер памяти. Интересно у Qt под винды есть проблемы динамическим выделением памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 14:58 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichaleПример создает 100000000 раз - да, объектов - да, в хипе - да, но пожалуй не динамически, т.к. new/delete выполняется 1 раз в начале и в конце (хитрый new в цикле, как я понимаю память не выделяет). Так реализованы пулы объектов. Это даже можно синтаксически реализовать как обычный new/delete, и тогда вы бы даже не догадались что там под капотом память выделяется большими блоками. Это все не означает что это не динамические объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 15:28 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichale, Да new в цикле ничего не выделяет, если сам конструктор ничего не выделяет. А так вполне себе динамически. Если есть необходимость выделять и удалять по 100500 мелких объектов быстро, создаешь список вот таких пулов. Каждый пул содержит N преалоцированных объектов, надо выделить объект - вызываешь конструктор, удалить - деструктор. Кончилось место в пуле - аллоцируешь новый. Да это не супер оптимально по объемам отжираемой памяти, но если критично именно время аллокации и деалокации, то так извернутся можно. Фишка в том, что менеджед языки не дают такой возможности (покрайней мере тут об этом никто ничего не сказал). Да и вроде судя из експериментов вообще не дают стока выделить. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 15:48 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Еще один феномен C++ в исполнении мелкософт (MSVC 2013). Писал на нем проект по разбору больших xml файлов (OpenStreetMap). Сразу пришлось отказаться от всех средств неявно использующих new/delete (например, std::string), дерево объектов XML также строилось жутко медленно. В конечном итоге вместо C++ остался голый C и вся обработка происходила в событиях "начало тэга" и "конец тега". Теперь прикол, чисто в демо целях конечный результат нужно было выдать в текстовом csv формате - не стал ничего оптимизировать и использовал текстовый файловый поток и операцию <<, выводил строки с именами объектов и вещественные числа с координатами объектов, и что же - это сожрало больше 90% всего времени обработки XML! При этом проц занимался полностью, половина процессорного времени была системным, у процесса быстро росло PageFaults, а вывод в файл происходил со скоростью 200кб/сек. Больно и обидно мне стало за C++, которым, из-за программистов MS, попользоваться мне просто не удалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 16:09 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichaleЕще один феномен C++ в исполнении мелкософт (MSVC 2013). Писал на нем проект по разбору больших xml файлов (OpenStreetMap). Сразу пришлось отказаться от всех средств неявно использующих new/delete (например, std::string), дерево объектов XML также строилось жутко медленно. В конечном итоге вместо C++ остался голый C и вся обработка происходила в событиях "начало тэга" и "конец тега". Теперь прикол, чисто в демо целях конечный результат нужно было выдать в текстовом csv формате - не стал ничего оптимизировать и использовал текстовый файловый поток и операцию <<, выводил строки с именами объектов и вещественные числа с координатами объектов, и что же - это сожрало больше 90% всего времени обработки XML! При этом проц занимался полностью, половина процессорного времени была системным, у процесса быстро росло PageFaults, а вывод в файл происходил со скоростью 200кб/сек. Больно и обидно мне стало за C++, которым, из-за программистов MS, попользоваться мне просто не удалось Сказки дадюшки Римуса на нашем форуме... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 16:19 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Да, каюсь, поторопился с выводами, вывод в поток там был не причем - сам лажанулся... Но польза от публикации в форуме на лицо - баг то нашелся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2017, 19:48 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
Так что за зверь сожрал 90% ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2017, 00:47 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
maytonТак что за зверь сожрал 90% ? Амперсандик перед параметром ф-ии потерялся, а параметр был vector даблов длиной тыщ 100... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2017, 08:59 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
СиПиПиП.С. Посмотрите на код, генерируемый GCC - это разве можно назвать оптимизацией? Смотрю. Регулярно. Особенно если компилю по AVR (Atmel) или ARM (STM32). Оптимизация на весьма высоком уровне. Желание свалиться на ассемблер возникает очень редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2017, 12:15 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
nikichalemaytonТак что за зверь сожрал 90% ? Амперсандик перед параметром ф-ии потерялся, а параметр был vector даблов длиной тыщ 100... Это позор. Вы согласны? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:47 |
|
||
|
Почему тормозит C++?
|
|||
|---|---|---|---|
|
#18+
maytonЭто позор. Вы согласны? :) Ну, так-то, да. Если он потерялся по невнимательности, это одно. А то вот у меня было когда-то, я особо не понимал разницы, между, например CString и const CString& в качестве входного неизменяемого внутри функции параметра. Работает же одинаково! Надо создать ветку "пятничный позор" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 05:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=35970874&tid=2018019]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 285ms |
| total: | 554ms |

| 0 / 0 |
