На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Как влияет на скорость выполнения , "Стд. типы данных C" vs "стд. классы C++"
    Волнует такой момент, влияет на скорость выполнения программы и насколько использование стандартных типов данных С или стандартных классов С++ типа 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>


    Так вот: насколько целесообразней пользоваться типами данных стандартного С, хотя ну очень не хочеться (прога достаточно большая а согласитесь классами удобней), но скорость ее выполнения реально имеет далеко не последнее значение?
    Сообщение отредактировано: Michail04 -
      Вроде СТЛ классы шустрые, но можно померить с помощью GetTickCount(),...
        C по скорости почти всегда опережает с++.

        но на с++ удобнее организовывать код, за счет чего количество ошибок меньше и управляемость проектов гораздо выше, и скорость разработки программы (а не скорость работы) значительно выше.

        критические по времени фрагменты лучше писать на с, или вообще на асме%)
        Сообщение отредактировано: Demo_S -
          Как правило, вещи C++ более функциональны, но работают медленнее.
            Если стандартный класс всем хорош, кроме производительности, можно взять и переписать его под свою задачу. STL-классы всегда идут в исходниках.
              Цитата Demo_S @ 31.01.04, 23:08
              критические по времени фрагменты лучше писать на с, или вообще на асме%)

              Это еще не факт! Чтобы поспорить с современными компиляторами в производительности, нужно иметь ооочень большой опыт программирования на асме! Лучше написать хороший код на С и оптимизировать стандартные функции.
                Цитата Guest,1.02.04, 18:44
                Если стандартный класс всем хорош, кроме производительности, можно взять и переписать его под свою задачу. STL-классы всегда идут в исходниках.

                Посмею не согласиться. STL устроена таким образом, что используя его вы получаете всегда класс именно для вашей задачи. И переписывая его, вы делаете то, чем занимается препроцессор перед компиляцией непереписанного класса, построенного на основе библиотеки STL.
                К тому же я встречал в книжках где то пример, который показывал, что применение STL может в некоторых случаях ускорить выполнение отдельных кусков кода до 20 раз. Типичная задача - сортировка. При сортировке элементов в STL контейнере отсутствует преобразование типов, а при сортировке элементов с помощью функции qsort - не менее двух раз на один вызов. Что быстрее ясно без дальнейших комментариев.
                  Цитата
                  ADA, 4.02.04, 22:53
                  Посмею не согласиться. STL устроена таким образом, что используя его вы получаете всегда класс именно для вашей задачи. И переписывая его, вы делаете то, чем занимается препроцессор перед компиляцией непереписанного класса, построенного на основе библиотеки STL.

                  В общем верно, но есть нюансы. Например, при работе с контейнерами, содержащими объекты (а не фундаментальные типы). При переаллокации памяти в vector'е будут вызываны конструкторы и деструкторы для каждого из хранимых объектов. Даже если хранимый тип - POD. Это существенно замедляет работу.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0264 ]   [ 16 queries used ]   [ Generated: 1.05.24, 07:11 GMT ]