26 Naposledy upravil: kolin (2007-09-04 13:39:31)

Re: vykreslovani mrizky ve Windows Vista

Tak to mate pravdu, ted jsem na to koukal opravdu je ve schematu ridsi prahova hodnota. Ovsem v Layoutu mam prahovku nastavenou na 0.254, casto by se hodila jeste hustsi ale to bych umrel. Nepouzivat mrizku vubec nepripada v uvahu.
Ve je schematu jednak ta mrizka rychlejsi diky tomu ze mrizka i prah je ridsi, ale ted jsem koukal, ze kdyz schvalne otevru jeden (zdaleka ne nejvetsi) projekt, tak ve schematu je Schema Elements Total = 1768, a v layoutu ma hotova deska Elements Total = 23635, takze to celkove kresleni je mnohem delsi.

Nene, DWM je ovladani grafickeho prostredi, mj.cast procesu prevadi z procesoru na graf.kartu, at se s tim popere. Vysledky p.Löfflera mi jsou zahadou. Jedine ze pocitac pri testu vykonu hardware zjistil, ze neni dost vykonu a tak DWM bezi ale pouze ve velmi omezene mire nebo uplne na minimum. Ovsem to je dohad..
Pane Löfflere, stisknete soucasne kavesy WIN+PAUSE(BREAK) a napiste prosim index hodnoceni, najdete ho zhruba uprostred, polozka Hodnoceni.

Pridavam vysledky mereni se zapnutym DWM ale veskere animacni a graficke a buhvijake jeste vymozenosti jsou vypnute, cili chova se to vzhledove temer jako Win2K:

DOTS:        2004080  <---------------!!! O NECO VICE BODU, ale kdyz se kresli pres SetPixel nebo SetPixelV, tak je to vykresleno v pruzich viz. http://papouch.com/users/hroch/demopruhy.gif !!!
RESOLUTION:    1600*1200

SetPixel:    22328ms, CPU 55%
SetPixelV:    21969ms, CPU 55%
GDI MoveToEx:    33672ms, CPU 55%
Canvas MoveTo:    33766ms, CPU 55%

ovsem DWM stale bezi, takze nevim nakolik je to jako v Win2K, Cely zbytek systemu vypada jak kdyz neni hw akcelerace. Chovani Formicy je tak o 20% lepsi.

Mriz misto tecek by byla spise rusiva (v Eagle je tato moznost a neni to moc hezke, vyuziti to ma pouze pokud potrebujete soucastky zarovnat.

Castecne souhlasim s vasimi duvody, na druhou stranu zabrat 8MB ramky v dnesni dobe je temer zanedbatelne, soucasne u toho hrat hry nikdo nebude. Kresleni stavajici nebo nove pomoci bitmapy muzete podminit budto prepinacem v menu nebo si rovnou zjistite verzi windows a pak se nemusite tolik stydet. (Pokud vam neuniknou zdrojaky tak proc se vlastne stydet..) Jako uzivatel radsi ozelim 8MB nez vecne zpomalenou praci, to musite uznat sam.

Klidne nejake demo tohoto zpusobu poslete, rad to vyzkousim. Rekl bych ze Eagle to ma na stejnem principu (tedy ze dokresli jen nove odhalene strany, zbytek posune jako bitmapu). Ovsem asi bude opet zalezet na zpusobu kresleni v zavislosti na tom, o jak velkou cast obraz posunu.

27

Re: vykreslovani mrizky ve Windows Vista

Kreslení gridu skrz bitmapu jsem teď pokusně užil v archivu www.formica.cz/files/Layout-p98-test-bmp.zip .  Aby bylo alespoň trochu ospravedlnitelné, nevytvářím si samozřejmě bitmapu o rozměrech celého okna aplikace, nýbrž pouze jediné řádky.  Do ní vykreslím jednu řádku rastru, kterou pak užiji na různých řádkách okna.  (Také jsem dovolil trochu hustší rastr než dříve.) Pro zajímavost, celý kód pro kreslení gridu teď vypadá takto:

  Bitmap := TBitmap.Create;
  try
    Bitmap.Width  := CurrentForm.ClientWidth;
    Bitmap.Height := 1;
    with Bitmap.Canvas do begin
      Pen.Color := clBlack;
      MoveTo (0, 0);
      LineTo (Bitmap.Width, 0);
      GridDotX := MinGridX;
      repeat
        Pixels [ScreenX (GridDotX), 0] := CurrentColor;
        Inc (GridDotX, GridStep);
      until GridDotX > MaxGridX;
    end;
    CurrentForm.Canvas.CopyMode := cmSrcPaint;
    repeat
      y := ScreenY (GridDotY);
      CurrentForm.Canvas.Draw (0, y, Bitmap);
      Dec (GridDotY, GridStep);
    until GridDotY < MinGridY;
  finally
    Bitmap.Free;
  end;

Zároveň však musím říci, že k zabudování takovéto změny do programu bych v tomto stadiu přistupoval jen s krajní nechutí.  Důvodem je užití zcela nové metody, která se na některých počítačích může chovat nepředvídatelně.  Dostatečnou příčinou k tomu může např. být atribut PixelFormat.

28 Naposledy upravil: kolin (2007-09-10 08:22:04)

Re: vykreslovani mrizky ve Windows Vista

Parada! Kresli se to velice rychle i s mnohem hustsi mrizkou. Odhadem oka je to do 100 az 200ms.
Jake problemy ocekavate?
Jak by byla prijatelna varianta prepinace v menu, kdy defaultne bude stavajici zpusob kresleni?

29

Re: vykreslovani mrizky ve Windows Vista

Predem alespon zde a takto oznamuji, ze od nyni oficialne prechazi nick "kolin" pod novou osobu: me jmeno je Tomáš Och. Pan Kolínský, ktery mne zaucoval ve Formice a nejaky cas jsme resili nektera temata diskuzi, u nas skoncil a predal mi i tuto registraci.

Dekuji Vam za implementaci noveho kresleni mrizky, ted je prace mnohem prijemnejsi. Ke zpomaleni dochazi az s pribyvajicim mnozstvim soucastek ve vetsich projektech, coz je unosne (samozrejme ze by bylo idelani takto kreslit vse ale to uz bych nechal napr.do nove verze programu, to neni tak horke).

30

Re: vykreslovani mrizky ve Windows Vista

kolin napsal:

... Ve schematu s tim problem neni...

Když už jsme se do rychlosti vykreslování pustili v takovém rozsahu, že se z problému stalo zde zatím nejdelší vlákno, měl bych s dovolením ještě dotaz:

Někde ve firemním archivu byste jistě našel např. QUIDO USB 60-3.sch .  Když si zde vykreslím jeho první list (ten s procesorem) ve zvětšení 25%, zdá se mi, že segmentů dohromady tvořících veškerá písmena nápisů tam je přinejmenším srovnatelně s počtem bodů gridu (o rozteči 40 jednotek).  Jakých časů dosáhnete při vykreslování, pokud grid vypnete?

Ptám se proto, že kreslením nápisů užívajícím řádově menší počet volání API jsem se (jak to teď vypadá, možná jaksi v předstihu) zabýval v rámci pokusů s verzí 5.x, ale tehdy se ještě neobjevovaly zásadní problémy s rychlostí.

31 Naposledy upravil: kolin (2007-09-19 08:53:22)

Re: vykreslovani mrizky ve Windows Vista

Tak mereno stopkama na mobilu:
vypnuta mrzika: 1,7sec
zapnuta mrizka: 2,2sec

32

Re: vykreslovani mrizky ve Windows Vista

Děkuji za změření.  Beru to tedy tak, že zatím asi není důvod kreslení čar zrychlovat.  Jednou na ně stejně dojde.

33

Re: vykreslovani mrizky ve Windows Vista

Tak pokud by se podarilo ve schematu kreslit alespon mrizku stejne jako v layoutu tak by to samozrejme byl take prinos, pul sekundy je znat, ovsem kritictejsi to bylo v layoutu, kde je odlisny zpusob prace nez ve schematu, ve kterem neni tolik pohybu, uprav a oprav a cast schematu je napr.kopirovana z jineho (jiz overene bloky, tak proc pokazde kreslit znovu). Bohuzel pri kresleni desky je to pokazde znovu a nekolikrat preskladat soucastky nez vsechno funkcne, galvanicky i vzhledem vyhovuje.