Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.134.118.95] |
|
Сообщ.
#1
,
|
|
|
Волнует такой момент, влияет на скорость выполнения программы и насколько использование стандартных типов данных С или стандартных классов С++ типа vector или string
для пояснения например: 1. #include ... void main() { // в курсе char a[3] = "aa", b[3] = "bb"; strcat(a, b); } 2. #include .... void main() { // cм выше :-) string a = "aa", b = "bb"; a = a + b; } ну и это-же касаеться например char *anypointer[n] или vector<string> Так вот: насколько целесообразней пользоваться типами данных стандартного С, хотя ну очень не хочеться (прога достаточно большая а согласитесь классами удобней), но скорость ее выполнения реально имеет далеко не последнее значение? |
Сообщ.
#2
,
|
|
|
Вроде СТЛ классы шустрые, но можно померить с помощью GetTickCount(),...
|
Сообщ.
#3
,
|
|
|
C по скорости почти всегда опережает с++.
но на с++ удобнее организовывать код, за счет чего количество ошибок меньше и управляемость проектов гораздо выше, и скорость разработки программы (а не скорость работы) значительно выше. критические по времени фрагменты лучше писать на с, или вообще на асме%) |
Сообщ.
#4
,
|
|
|
Как правило, вещи C++ более функциональны, но работают медленнее.
|
Сообщ.
#5
,
|
|
|
Если стандартный класс всем хорош, кроме производительности, можно взять и переписать его под свою задачу. STL-классы всегда идут в исходниках.
|
Сообщ.
#6
,
|
|
|
Цитата Demo_S @ 31.01.04, 23:08 критические по времени фрагменты лучше писать на с, или вообще на асме%) Это еще не факт! Чтобы поспорить с современными компиляторами в производительности, нужно иметь ооочень большой опыт программирования на асме! Лучше написать хороший код на С и оптимизировать стандартные функции. |
Сообщ.
#7
,
|
|
|
Цитата Guest,1.02.04, 18:44 Если стандартный класс всем хорош, кроме производительности, можно взять и переписать его под свою задачу. STL-классы всегда идут в исходниках. Посмею не согласиться. STL устроена таким образом, что используя его вы получаете всегда класс именно для вашей задачи. И переписывая его, вы делаете то, чем занимается препроцессор перед компиляцией непереписанного класса, построенного на основе библиотеки STL. К тому же я встречал в книжках где то пример, который показывал, что применение STL может в некоторых случаях ускорить выполнение отдельных кусков кода до 20 раз. Типичная задача - сортировка. При сортировке элементов в STL контейнере отсутствует преобразование типов, а при сортировке элементов с помощью функции qsort - не менее двух раз на один вызов. Что быстрее ясно без дальнейших комментариев. |
Сообщ.
#8
,
|
|
|
Цитата ADA, 4.02.04, 22:53 Посмею не согласиться. STL устроена таким образом, что используя его вы получаете всегда класс именно для вашей задачи. И переписывая его, вы делаете то, чем занимается препроцессор перед компиляцией непереписанного класса, построенного на основе библиотеки STL. В общем верно, но есть нюансы. Например, при работе с контейнерами, содержащими объекты (а не фундаментальные типы). При переаллокации памяти в vector'е будут вызываны конструкторы и деструкторы для каждого из хранимых объектов. Даже если хранимый тип - POD. Это существенно замедляет работу. |