Re[3]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.02.02 22:28
Оценка:
Здравствуйте Аноним, Вы писали:

Z>>Хех, а ты лучше линии пачкой выводи...

Z>>Используй e.Graphics.DrawLines с массивом линий.

А>Ох-ох-ох... Еще раз... мне НЕ НУЖНА полосатая форма. Меня волнует, что рисование тормозит В ПРИНЦИПЕ.


Ну, так импортируй старое доброе GDI и тормозов будет куда меньше...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.02.02 22:30
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

IT>Кстати... Для сравнения скорости работы очень полезно скачать с www.devexpress.com демо-программки к ихним библиотекам.


IT>Можете скачать для сравнения демки к нативным (ActiveX, VCL) библиотекам и к .NET библиотекам.


IT>Эти парни — не дураки и уж если у них так тормозит, значит, точно что-то не так... в .net ((


Я бы качал чё нибудь от Инфрогистик (бывший Шаридан). Они на .Net серьезные бабки делать хотят.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: retalik www.airbandits.com/
Дата: 15.02.02 05:27
Оценка:
Здравствуйте AndrewVK, Вы писали:

AVK>Здравствуйте retalik, Вы писали:


R>>Связано это с тем, что GDI+ 1.0 вообще не акселерирован — а это, в сочетании с float-координатной системой и 32-битным расчетом цвета, сильно сказывается.

AVK>К чему тогда заявления производителей видеокарт о полной аппаратной поддержке GDI+?

А какие проблемы? Аппаратный alpha-blending есть, вывод текстур в 32 битах есть, scaling/stretching есть — чем не полная поддержка GDI+?
Другое дело, GDI+ их пока не поддерживает (DDI нету).

Если кто хочет почитать, как это задумывалось (тогда еще она GDI2k называлась), то есть перевод статьи с MSDN на Reactor Critical: http://www.reactor.ru/white-ms-gdi2000/white-ms-gdi2000.shtml

Может, когда-нибудь до этого и доживем...
Успехов,
Виталий.
Re[3]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Yurik США  
Дата: 15.02.02 15:16
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Я бы качал чё нибудь от Инфрогистик (бывший Шаридан). Они на .Net серьезные бабки делать хотят.

Ссылочку можно?
Re[8]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Simontsev Andrew Россия  
Дата: 15.02.02 19:59
Оценка:
Здравствуйте Yurik, Вы писали:

Y>Здравствуйте Igor Trofimov, Вы писали:


IT>>Почему? GDI+ тут не причем, если большие накладные расходы именно на ВЫЗОВ не-safe (с точки зрения .NET) функций.Мы же, опять-таки, не знаем, что кроется за DllImport...

Y>Все таки gdi+ виноват, imho. Где-то уже пробегала инфа, что тормозной он на редкость. Может не отладили еще ребята из Микрософта, не дооптимизировали. Надеюсь, в следующих версиях это поправят.


GDI+ медленный не из-за того, что "ребята из Микрософта" недоотладили, а из-за того, что он рисует все по-другому — антиалиасинг, нецелочисленные координаты и проч... В микрософтовской ньюсгруппе по GDI периодически встает вопрос, почему GDI+ медленней простого GDI, и постоянно возникает ответ — они не сравнимы.
Sincerely yours,
Andrew Simontsev.
Re[9]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Yurik США  
Дата: 15.02.02 21:29
Оценка:
Здравствуйте Simontsev Andrew, Вы писали:

SA>GDI+ медленный не из-за того, что "ребята из Микрософта" недоотладили, а из-за того, что он рисует все по-другому — антиалиасинг, нецелочисленные координаты и проч... В микрософтовской ньюсгруппе по GDI периодически встает вопрос, почему GDI+ медленней простого GDI, и постоянно возникает ответ — они не сравнимы.


Ну, "не сравнимы" — это очень сильно сказано. Если две системы предназначены для решения одних и тех же (или похожих, по крайней мере) задач, то сравнивать их можно и нужно. Другое дело — по каким параметрам. Итак, с параметром "скорость" все ясно. А другие мы здесь не обсуждаем.
Заявление о том, что GDI+ — абсолютно другая система, imho, нужно просто понимать так, что ускорения в следующих версиях ждать не стоит, по крайней мере глобального. В таком случае, очень жаль, что в .NET нет классовой обертки вокруг простого GDI. Типа VCL-ного TCanvas.
Re[10]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.02 22:43
Оценка:
Здравствуйте Yurik, Вы писали:

Y> В таком случае, очень жаль, что в .NET нет классовой обертки вокруг простого GDI. Типа VCL-ного TCanvas.


Ну, так сделай. Кто тебе мешает. У MS даже есть нэймспэйс с описанием всех апишниых функций. Так что отсается только запернуть...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.02 22:49
Оценка:
Здравствуйте Yurik, Вы писали:

Y>Здравствуйте VladD2, Вы писали:


VD>>Я бы качал чё нибудь от Инфрогистик (бывший Шаридан). Они на .Net серьезные бабки делать хотят.

Y>Ссылочку можно?

Пожайлуста.

http://infragistics.com/sections/dotnet.asp
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Igor Trofimov  
Дата: 16.02.02 07:58
Оценка:
Y>> В таком случае, очень жаль, что в .NET нет классовой обертки вокруг простого GDI. Типа VCL-ного TCanvas.
VD>Ну, так сделай. Кто тебе мешает. У MS даже есть нэймспэйс с описанием всех апишниых функций.
Так что отсается только запернуть...

Угу... Вот только в стандартной-то библиотеке — хрен чего поменяешь
Это тогда по хорошему и стандартную библиотеку контролов надо здорово переработать — чтобы под этой оберткой пахала...
Re[10]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Андрей Симонцев Россия  
Дата: 16.02.02 15:02
Оценка:
Здравствуйте Yurik, Вы писали:

Y>Здравствуйте Simontsev Andrew, Вы писали:


SA>>GDI+ медленный не из-за того, что "ребята из Микрософта" недоотладили, а из-за того, что он рисует все по-другому — антиалиасинг, нецелочисленные координаты и проч... В микрософтовской ньюсгруппе по GDI периодически встает вопрос, почему GDI+ медленней простого GDI, и постоянно возникает ответ — они не сравнимы.


Y>Ну, "не сравнимы" — это очень сильно сказано. Если две системы предназначены для решения одних и тех же (или похожих, по крайней мере) задач, то сравнивать их можно и нужно. Другое дело — по каким параметрам. Итак, с параметром "скорость" все ясно. А другие мы здесь не обсуждаем.


GDI+ предназначен для более широкого круга задач. В частности в старом GDI не было антиалиасинга, полупрозрачностей, геометрических преобразований...

Y>Заявление о том, что GDI+ — абсолютно другая система, imho, нужно просто понимать так, что ускорения в следующих версиях ждать не стоит, по крайней мере глобального. В таком случае, очень жаль, что в .NET нет классовой обертки вокруг простого GDI. Типа VCL-ного TCanvas.


Ну для тех кому важна только скорость действительно стоило бы сделать... Правда можно и самому написать при большом желании... GDI+ и GDI в принципе совместимы (т.е. у гдиплюсных объектов можно запрашивать гдишный хэндл)...
Sincerely yours,
Andrew Simontsev.
Re[12]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.02 00:03
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

Y>>> В таком случае, очень жаль, что в .NET нет классовой обертки вокруг простого GDI. Типа VCL-ного TCanvas.

VD>>Ну, так сделай. Кто тебе мешает. У MS даже есть нэймспэйс с описанием всех апишниых функций.
IT>Так что отсается только запернуть...

IT>Угу... Вот только в стандартной-то библиотеке — хрен чего поменяешь

IT>Это тогда по хорошему и стандартную библиотеку контролов надо здорово переработать — чтобы под этой оберткой пахала...

Так, а стандартная, она на обычных вин-контролах базируется. Так что перехватывай назные виндузные сообщения и делай, что хочешь. Мне вот когда пример к одной статье писал нужно было сделать выделение в текстбоксе... ну, и чё? Послал пару Edit-овых месаг окошку и все в порядке.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Андрей Россия  
Дата: 19.02.02 04:51
Оценка:
Здравствуйте VladD2, Вы писали:


VD>У MS даже есть нэймспэйс с описанием всех апишниых функций. Так что отсается только запернуть...


А имечко этого namespace не опубликуешь? Я что-то не нашел, видимо, плохо искал.

PS Microsoft.Win32 не предлагать.
Re[4]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Kurchenko Oleg E. Россия  
Дата: 26.07.02 10:49
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Ну, так импортируй старое доброе GDI и тормозов будет куда меньше...

Когда-то давно вставал похожий вопрос: а почему GDI такой тормозной?
И вообще то он еще не снят.
Может имело бы смысл его аппартно ускорять?
Crescite, nos qui vivimus, multiplicamini
Re[4]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Gagarkin  
Дата: 01.08.02 07:38
Оценка: -1
Здравствуйте AndrewVK, Вы писали:

AVK>Код номер два


AVK>procedure Test.Paint;


// Входим в процу
// Canvas залочен!

AVK>begin


// Чего-то там рисуем в Canvas, типа что-то в буфер

AVK>end;

// Вышли из процы.
// Далее работает тот, кто вызвал:
// Canvas разлочивается и отрисовывается один раз!


AVK>Код номер раз


// Входим в процу
// Graphics залочен? — Сомневаюсь.
AVK> private void PanelPaint(object sender, PaintEventArgs e) {

// Чего-то там рисуем
// А кто сказал, что при каждом DrawLine окну не посылается WP_PAINT?

AVK> }


Я, конечно, могу очень сильно ошибаться.
Если так то простите за вмешательство.
Re[5]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Аноним  
Дата: 04.08.02 20:53
Оценка:
Здравствуйте Gagarkin, Вы писали:

G>// Чего-то там рисуем

G>// А кто сказал, что при каждом DrawLine окну не посылается WP_PAINT?
Тогда бы все зациклилось, ибо эта процедура как раз и вызывается по WM_PAINT

G>Я, конечно, могу очень сильно ошибаться.

G>Если так то простите за вмешательство.
Чего то ты поздновато опомнился, последенее сообщение в треде было давным давно
Re[6]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Gagarkin  
Дата: 05.08.02 09:17
Оценка:
Здравствуйте ...

G>>// Чего-то там рисуем

G>>// А кто сказал, что при каждом DrawLine окну не посылается WP_PAINT?
А>Тогда бы все зациклилось, ибо эта процедура как раз и вызывается по WM_PAINT
Ну, тормознулся я, ну с кем не бывает? (Утро, еще не выпито было достаточно кофе).

Я хотел сказать (написать) не WM_PAINT, я что-то в духе того, что рисование в Delphe идет в некоторый CompatibleDevice, а в Framework Forms в текущий DC напрямую.
Мне казалось, что когда рисование происходит в CompatibleDevice, то это намного быстрее.
Но... (как всегда это "НО" ) оно то конечно быстрее, но Borland как оказалось тоже рисует напрямую в DC (точнее в CompatibleBitmap).
И если написать подобным образом (извините за Paclas, и не кидайте камнем, даже те, кто и не грешен),
как в <Sample1[Paint]>, то получается подобный эффект, как в программке на До-диез (C#).

Далее идут два варианта <Sample2[WM_PAINT]> (кто хочет, можете поиграться:
надо все лишь комментировать "message WM_PAINT;", размер окна лучше не делать более 400*300).
В процедуре onWM_PAINT1 ривание идет в CompatibleDevice, а затем один раз выкидывается
(BitBlt), т.е. появляется сначала пустое окно, а затем через несколько секунд решетка.
Второй же вариант аналог того, как сделано у Borland в TWinControl.WMPaint(var Msg : TWMPaint).
В среднем первый вариант в два раза быстрее (но видимым это становится только при достаточно огромном рисовании, как например:
for j := 0 to 1000 do begin )!

Это я все просто оправдываюсь за чушь, которую спорол.
Что первое пришло в голову, то и написал — не проверив.

<ВЫВОД>:
Лично для меня загадка, почему GDI+ на столько медленее.
Поживем увидим.Хочется надеятся,
что они там просто где-то сделали ошибочку
(интересно, в MS перешли представители BUGland или Borland),
а может специально понавставляли туда sleep'ов (уж больно похож эффект в <Sample1[Paint]>).


[+]--------------------------8<-----------
// Sample1[Paint]
...
type
TForm1 = class(TForm)
private
public
procedure Paint; override;
end;
...
procedure TForm1.Paint;
var
i : integer;
begin
inherited;

for i := 0 to Self.Width do begin

if i and 1 > 0 then begin
Self.Canvas.Pen.Color := clWindow;
end else begin
Self.Canvas.Pen.Color := clWindowText;
end;
sleep(1);

Self.Canvas.MoveTo(i,0);
Self.Canvas.LineTo(i,Self.Height);
end;
end;
[-]--------------------------8<-----------

[+]--------------------------8<-----------
// Sample2[WM_PAINT]
unit WMPAINTUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure onWM_PAINT1(var Msg : TWMPaint); message WM_PAINT;
procedure onWM_PAINT2(var Msg : TWMPaint); //message WM_PAINT;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.onWM_PAINT1(var Msg: TWMPaint);
var
ps : TPaintStruct;
dc : THandle;
i : integer;
j : integer;
pp : PPoint;
phOld : THandle;
ph1, ph2 : THandle;

hx : THandle;
hb : THandle;

st0 : TDateTime;
st1 : TDateTime;
begin
pp := nil;

st0 := Now;

hx := BeginPaint(Self.Handle, ps);
dc := CreateCompatibleDC(hx);
hb := CreateCompatibleBitmap(dc, Self.ClientWidth, Self.ClientHeight);
SelectObject(dc, hb);

ph1 := CreatePen(PS_SOLID, 1, clBlack);
ph2 := CreatePen(PS_SOLID, 1, clWhite);
phOld := SelectObject(dc, ph2);
for i := 0 to Self.ClientWidth do begin
if (i and 1)>0 then begin
SelectObject(dc, ph1);
end else begin
SelectObject(dc, ph2);
end;
for j := 0 to 1000 do begin
MoveToEx(dc, i, Self.ClientHeight, pp);
LineTo(dc, i,0);
end;
end;
SelectObject(dc, phOld);

BitBlt( hx, 0,0, Self.ClientWidth, Self.ClientHeight,
dc, 0,0,
SRCCOPY);

EndPaint(hx, ps);

DeleteObject(ph1);
DeleteObject(ph2);

DeleteObject(hb);
DeleteDC(dc);

st1 := Now;
Self.Caption := IntToStr(round((double(st1)-double(st0))*24*60*60*1000));
end;

procedure TForm1.onWM_PAINT2(var Msg: TWMPaint);
var
ps : TPaintStruct;
dc : THandle;
i : integer;
j : integer;
pp : PPoint;


phOld : THandle;
ph1, ph2 : THandle;

hb : THandle;
hbOld : THandle;

st0 : TDateTime;
st1 : TDateTime;
begin
pp := nil;

st0 := Now;

dc := BeginPaint(Self.Handle, ps);
hb := CreateCompatibleBitmap(dc, Self.ClientWidth, Self.ClientHeight);
hbOld := SelectObject(dc, hb);

ph1 := CreatePen(PS_SOLID, 1, clBlack);
ph2 := CreatePen(PS_SOLID, 1, clWhite);
phOld := SelectObject(dc, ph2);
for i := 0 to Self.ClientWidth do begin
if (i and 1)>0 then begin
SelectObject(dc, ph1);
end else begin
SelectObject(dc, ph2);
end;
for j := 0 to 1000 do begin
MoveToEx(dc, i, Self.ClientHeight, pp);
LineTo(dc, i,0);
end;
end;

BitBlt( dc, 0,0, Self.ClientWidth, Self.ClientHeight,
hb, 0,0,
SRCCOPY);

SelectObject(dc, phOld);
SelectObject(dc, hbOld);
EndPaint(dc, ps);

DeleteObject(ph1);
DeleteObject(ph2);

DeleteObject(hb);

st1 := Now;
Self.Caption := IntToStr(round((double(st1)-double(st0))*24*60*60*1000));
end;

end.
[-]--------------------------8<-----------
Re: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: iZEN СССР  
Дата: 06.08.02 05:55
Оценка: -1
Здравствуйте Igor Trofimov, Вы писали:

IT>Все эти тесты, которые тут публиковались — это конечно хорошо.... Жаль, что они охватывают не все аспекты программирования...


IT>Может, я конечно, делаю что-то очень-очень неправильно, но следующий код отрисовывает форму размером 1024x768 ОКОЛО СЕКУНДЫ!!!!!!!


IT>private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

IT> {
IT> using ( Pen p1 = new Pen(Color.Black),
IT> p2 = new Pen(Color.White) )
IT> {
IT> for (int x = 0; x < Width; x++)
IT> if ( (x & 1) > 0)
IT> e.Graphics.DrawLine(p1, x, 0, x, Height-1);
IT> else
IT> e.Graphics.DrawLine(p2, x, 0, x, Height-1);
IT> }
IT> }

package drawtest;
/**
 * Title:        Тест отрисовки в 2D
 * Description:  Простой тест на скорость заполнения линиями разного цвета формы 1024x768
 * Copyright:    Copyright (c) 06.08.2002
 * @author iZEN
 * @version 1.0
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DrawTestFrame extends JFrame {
 JPanel contentPane;
 BorderLayout borderLayout1 = new BorderLayout();

 /**Construct the frame*/
 public DrawTestFrame() {
  enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  try {
   jbInit();
  }
  catch(Exception e) {
   e.printStackTrace();
  }
 }
 /**Component initialization*/
 private void jbInit() throws Exception  {
  //setIconImage(Toolkit.getDefaultToolkit().createImage(DrawTestFrame.class.getResource("[Your Icon]")));
  contentPane = (JPanel) this.getContentPane();
  contentPane.setLayout(borderLayout1);
  this.setSize(new Dimension(1024, 768));
  this.setTitle("DrawTest");
 }
 /**Overridden so we can exit when window is closed*/
 protected void processWindowEvent(WindowEvent e) {
  super.processWindowEvent(e);
  if (e.getID() == WindowEvent.WINDOW_CLOSING) {
   System.exit(0);
  }
 }
 public void paint(Graphics g) {
  super.paint(g);   
  long st = System.currentTimeMillis();
  //Pen p1 = new Pen(Color.Black);
  //Pen p2 = new Pen(Color.White);
  Color black = Color.black;
  Color white = Color.white;
  for(int i = 0; i < 1024; i++) {
   if((i&1) == 0)
    g.setColor(black);
   else
    g.setColor(white);   
   g.drawLine(i,0,i,768);
  }
  System.out.println("Время отрисовки: " + (System.currentTimeMillis() - st) + " миллисекунд");
 }
 public static void main(String[] args) {
  DrawTestFrame frame = new DrawTestFrame();
  frame.setVisible(true);
 }
}

Несколько закрытий/открытий окна:
Время отрисовки: 40 миллисекунд
Время отрисовки: 30 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 10 миллисекунд
Время отрисовки: 10 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 30 миллисекунд
Время отрисовки: 30 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 30 миллисекунд


Видели? Меньше секунды!

Вы будете смеяться, но это было сделано на платформе: PentiumII/350МГц/128Мбайт PC133 RAM/Riva TNT2
Sun Java2 Platform, Standard Edition v.1.4.0 (Java; VM; Vendor = 1.4.0; Java HotSpot(TM) Client VM 1.4.0-b92; Sun Microsystems Inc.)

А говорят, что Swing тормозит. :)))
Re[2]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: iZEN СССР  
Дата: 06.08.02 06:02
Оценка:
Добавлю.
Система: Operating System = Windows 2000 version 5.0 running on x86
с Service Pack 2.
Во время запуска было отожрано другими приложениями порядка 197 Мб памяти. И это на 128 Мб оперативки.
:user:
Re[2]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: Igor Trofimov  
Дата: 06.08.02 06:10
Оценка:
ZEN>Видели? Меньше секунды!
ZEN>А говорят, что Swing тормозит.

1. При чем тут свинг?
2. Давно уж выяснили, что причина тормознутости — в GDI+. Напиши с использованием GDI+ (если это возможно на жабе) — вот тогда будет адекватно.
3. Ты ж писал тесты для Дельфи тоже — ну так и тест отрисовки продублируй что-ли на Дельфе...интересно.
Re[3]: Отрисовка в C# тормозит ПО СТРАШНОМУ
От: iZEN СССР  
Дата: 06.08.02 06:35
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

ZEN>>Видели? Меньше секунды!

ZEN>>А говорят, что Swing тормозит. :)))

IT>1. При чем тут свинг?

IT>2. Давно уж выяснили, что причина тормознутости — в GDI+. Напиши с использованием GDI+ (если это возможно на жабе) — вот тогда будет адекватно.
IT>3. Ты ж писал тесты для Дельфи тоже — ну так и тест отрисовки продублируй что-ли на Дельфе...интересно.

Пожалуйста:
unit Unit1;
(*
 * Title:        Тест отрисовки в 2D (с помощью GDI)
 * Description:  Простой тест на скорость заполнения линиями разного цвета формы 1024x768
 * Copyright:    Copyright (c) 06.08.2002
 * @author iZEN
 * @version 1.0
*)
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TDrawTestForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DrawTestForm: TDrawTestForm;

implementation

{$R *.dfm}

procedure TDrawTestForm.FormCreate(Sender: TObject);
begin
  Self.Width := 1024;
  Self.Height := 768;
end;

procedure TDrawTestForm.FormPaint(Sender: TObject);
var
  st: Cardinal;
  i: Integer;
  black, white: Integer;
begin
  st := Windows.GetTickCount();
  //Pen p1 = new Pen(Color.Black);
  //Pen p2 = new Pen(Color.White);
  black := clBlack;
  white := clWhite;
  for i := 0 to 1024 do begin
    if ((i AND 1) = 0) then
      Canvas.Pen.Color := black
   else
      Canvas.Pen.Color := white;
   Canvas.MoveTo(i, 0);
   Canvas.LineTo(i, 768);
  end;
  ShowMessage('Время отрисовки: ' + IntToStr(Windows.GetTickCount() - st) + ' миллисекунд'); //20-30мс на PII/350МГц
end;

end.


Несколько закрытий/открытий окна:
Время отрисовки: 30 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 30 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 20 миллисекунд
Время отрисовки: 30 миллисекунд


Это было сделано на той же платформе: PentiumII/350МГц/128Мбайт PC133 RAM/Riva TNT2
ОС: Windows2000 Proffessional RUS, Service Pack 2
IDE: Delphi 6 Enterprise Edition.
Отожрано памяти другими приложениями порядка 160 Мб.

Вывод: Java2 v.1.4.0 Swing ничуть не уступает по скорости приложениям Delphi 6 с выполнением простой 2D графики через GDI.
:super:
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.