Войти
ПрограммированиеФорумОбщее

Delphi ++ (4 стр)

Страницы: 1 2 3 4
#45
11:57, 30 июня 2009

Agent_AL

>унарные: ++, --, +=, -=, *=, /=
>В Lazarus всё это есть. Давно с Дельфи свалил. Теперь всего хватает)

И сколько людей пользуется этими костылями? В пределах статистической погрешности? Все эти плюсовые фичи, воткнутые во фрипаскаль без какой-либо вменяемой проработки - инородное тело, продукт жутких мутаций. Тут не восторгаться, а только пожалеть можно.


#46
12:00, 30 июня 2009

Люди дело говорят, кому будет нужно расширение, которое может уже на следующей версии Делфи не работать... Не думаю, что ктото рискнёт это использоваться в серьёзном проекте...

#47
14:16, 30 июня 2009

Следующий делфи (Commodore) будет построен по принципу фронт-энд — бэк-энд, тобиш со встроенным препроцессором (который можно будет поменять на свой). Кстати бэк-енд тоже будет сменным (компиляция под 32/64,  Win/Linux)
http://edn.embarcadero.com/article/39174

Ходят слухи, что новая версия выйдет в конце этого лета:
    * 64-bit Native
    * Full compiler, RTL and VCL support for 64 native
    * Multi-Core, Multi-threaded applications

#48
19:17, 30 июня 2009

Mikle
> Возможно получится выигрыш на меньшем объёме кешируемой памяти.

Чтобы заметно изнасиловать кеш нужен специфический код. Вот, если интересно, пример из жизни воплощенный в паскаль.

procedure TForm1.Button1Click(Sender: TObject);
const
  pitch = 2048; // в жизни было 1024, но не суть важно
  //pitch = 2048+1;
  height = 768;
var
  i, k: integer;
  s, d, ps, pd: pchar;
  tick: DWORD;
begin
  getmem(s, pitch * height);
  getmem(d, pitch * height);

  tick := GetTickCount();
  for k := 0 to 100000 do begin
    ps := s;
    pd := d;
    for i := 0 to height - 1 do begin
      pd[0] := ps[0];
      inc(pd, pitch);
      inc(ps, pitch);
    end;
  end;
  Caption := IntToStr(GetTickCount() - tick);

  freemem(s);
  freemem(d);
end;

Запусти на пентиуме 4, сравни результаты с pitch 2048/2049 и прозрей. Разница будет приблизительно в 10 раз в пользу 2048+x (что-то типа 400мсек против 6 сек). На Core2 с подобным кодом вроде получше, но точно уже не помню, а запускать делфи влом.

#49
19:46, 30 июня 2009

entryway
У меня ни Дельфи, ни Паскаля нет, но я подозреваю, что если поменять индексы местами:
      inc(pitch, pd);
      inc(pitch, ps);
то ситуация координально изменится. Тут вообще всё дело не в кэшировании, а в выравнивании на границу параграфа, я говорил о другом.

#50
20:42, 30 июня 2009

Mikle
> но я подозреваю, что если поменять индексы местами
Ерунда какая-то. Что значит "поменять индексы"? Там к указателю на данные прибавляется ширина экрана (копирование по столбцам), а ты предлагаешь к ширине экрана прибалвять адрес данных :)

Mikle
> Тут вообще всё дело не в кэшировании, а в выравнивании на границу параграфа
Да что ты говоришь :) Наверное именно поэтому размерность 1025 работает в 10 раз быстрее чем 1024

Mikle
> я говорил о другом.
Прежде всего ты говорил о каком-то мифическо-теоретическом выигрыше при использовании 2 переменных на стеке вместо 4х. Я же тебе привел пример который действительно "рвет" кеш, уменьшая производительность на порядок.

#51
21:44, 30 июня 2009

*vmr
> Ходят слухи, что новая версия выйдет в конце этого лета:
> * 64-bit Native
> * Full compiler, RTL and VCL support for 64 native
> * Multi-Core, Multi-threaded applications
Это в ней Integer будет приравнен к Int64?

Страницы: 1 2 3 4
ПрограммированиеФорумОбщее

Тема в архиве.