Russian Qt Forum

Компиляторы и платформы => Компиляторы => Тема начата: Cyrax от Октябрь 26, 2006, 18:00



Название: Сравнение компиляторов по скорости выполнения программы
Отправлено: Cyrax от Октябрь 26, 2006, 18:00
Хочу сравнить скорость выполнения простенькой программы, освобождающей память, написанной на C++ и на C#. В С++-коде освобождаю сам, в C#-коде - мусорщик...
Для начала скомпилил (g++ -O3) код:
Код:

int main(void)
{ char *ptr;  
  for(int i=0; i++; i<1000)
  { for(int j=0; j++; j<100)
     ptr = new char[1024];  // 1Кб
     delete[] ptr;
  };
  return 0;
};

Получил 15451 байт.

Далее скомпилил в VS2005 код:
Код:

#include "stdafx.h"
int main(void)
{ char *ptr;  
  for(int i=0; i++; i<1000)
  { for(int j=0; j++; j<100)
     ptr = new char[1024];  // 1Кб
     delete[] ptr;
  };
  return 0;
};

Получил 5632 байта.
Это что, выходит в VS2005 компилятор втрое лучше оптимизирует код, чем g++ ?


Название: Сравнение компиляторов по скорости выполнения программы
Отправлено: Admin от Октябрь 26, 2006, 22:33
оптимизация и размер кода разные понятия!
после gcc к примеру используют программку strip
а во время компиляции VC что то типа /ref команды

оптимизация чаще оценивается на скорости! а не на выделении памяти!


Название: Сравнение компиляторов по скорости выполнения программы
Отправлено: Вудруф от Октябрь 27, 2006, 07:06
Во-первых, я поменял местами сравнение и инкремент.

strip --strip-unneeded
В моём случае итоговый размер программы получился равен 44344 (21365 после strip).
Но! -o3 - это агрессивная оптимизация, помимо всего прочего, она может раскручивать циклы, что естественно приведёт к увеличению размера программы (но сократит время выполнения). Впрочем, в данном случае размер программы получается одинаковым.

И ещё - не надо гнаться за размером. Это не показатель.