Переключение с отладки для выпуска конфигурации, имеющей эффект на производительность?

Я протестировал несколько отрывков сравнительного тестирования на Delphi как этот:

uses
..., Diagnostics;

procedure TForm2.Button1Click(Sender: TObject);
var
  i,elapsed: integer;
  stopwatch: TStopwatch;
  ff: textfile;
begin
    if FileExists('c:\bench.txt') then
      DeleteFile('c:\bench.txt'); 

    stopwatch := TStopwatch.create;
    stopwatch.Reset;
    stopwatch.Start;

    AssignFile(ff,'c:\bench.txt');
    Rewrite(ff);

    for I := 1 to 999000  do
      write(ff,'Delphi programmers are ladies men :D');

    CloseFile(ff);
    stopwatch.Stop;
    elapsed := stopwatch.ElapsedMilliseconds;
    ShowMessage(inttostr(elapsed));    
end;

Не имеет значения, если я выполняю/компилирую под debug или release конфигурация результат является приблизительно 900. Когда я переключаюсь от debug кому: release в Visual Studio (и для C++ и для c#) мои программы становятся ВОЛШЕБНО быстрее. Я использую Delphi 2010, и я активирую конфигурацию выпуска от менеджера проектов, а также проект-> менеджер конфигурации и даже проект-> опции-> компилятор Delphi, но без эффекта почему??

Если это имеет значение: Я использую Windows XP, я получил 1 ГБ RAM и Intel Core2 CPU.

8
задан Kromster says support Monica 9 April 2012 в 12:20
поделиться

4 ответа

  1. Вы проверяли, как отличаются конфигурации? Даже если они имеют такие названия, как RELEASE или DEBUG, они полностью конфигурируемы. Вы даже можете настроить их наоборот.

  2. Код, который вы проверяете, в основном связан с вводом-выводом. Поэтому убедитесь, что проверки ввода-вывода отключены в конфигурации RELEASE.

  3. Delphi по-прежнему создает быстрый код даже при отладке ;)

16
ответ дан 5 December 2019 в 05:07
поделиться

В дополнение к тому, что сказал Уве, убедитесь, что вы выполнили «Сборку» после переключения конфигурации. Выполнение простой компиляции или запуск приложения не приведет к перекомпиляции всех модулей с новыми настройками.

Как и другие комментаторы, я также не ожидал слишком большой разницы между двумя конфигурациями, учитывая используемый тест. Настоящее узкое место - это ввод-вывод, который, скорее всего, перевесит любые различия в производительности между DEBUG и RELEASE.

Наконец, отладка в Delphi не намного медленнее, чем отладка сборки Release. Черт возьми, я иногда запускаю Outlook в отладчике большую часть дня (я разрабатываю надстройки для Outlook), не замечая заметной разницы в производительности.

10
ответ дан 5 December 2019 в 05:07
поделиться

Думаю, это плохой тест. Все, что вы делаете, это записываете в файл, что означает, что большая часть времени тратится на код Windows, а не на ваш код Delphi, и, следовательно, настройки компилятора не повлияют существенно на общее время выполнения

5
ответ дан 5 December 2019 в 05:07
поделиться

В вашем основном массиве кода:

for I := 1 to 999000  do
   write(ff,'Delphi programmers are ladies men :D');

нет ничего, что требовало бы тщательных проверок. Ваш выбор:

  • Проверка диапазона
  • Проверка переполнения
  • Проверка ввода / вывода

Из этих трех будет применяться только проверка ввода / вывода , что, вероятно, эквивалентно добавлению :

for I := 1 to 999000 do
begin
   hresult := Write(ff, 'Dephi programmers are ladies men :D');
   if hresult < 0 then
      raise EIOException.Create('That''s what your mom told me, in bed.');
end;

И инструкции ЦП CMP и JNE не очень сложные. Они карлики , записывая на жесткий диск.

Он бежит так же быстро, потому что он быстр.

3
ответ дан 5 December 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: