[ENH]MorphicPerformance1-efc ([closed] on Mantis ID 1628)
Larry Trutter
ltrutter at onemain.com
Sun Aug 7 14:01:15 UTC 2005
Thank you for your report. I have transferred your report to Squeak's
Mantis Database and you can followup on the issue if desired by going to
http://bugs.impara.de/view.php?id=1628
In the future please report new issues on Squeak's Mantis Database at
http://bugs.impara.de/ .
Please use the Mantis database for all bugs, fixes, and enhancements in
the future. http://minnow.cc.gatech.edu/squeak/398
Larry Trutter
Eddie Cottongim wrote:
> I thought I would group some of these optimizations together so it
> would be easier to keep track of. Here is the first grouping I have
> come up with before I leave on vacation and quit bugging everybody.
> The work on the explorer windows is going to have to wait because it
> touches too many things.
>
> Benchmarks follow. Please let me know if you have any problems.
>
> I hope this is helpful.
> Thanks,
> Eddie
>
> From Preamble:
> "Change Set: MorphicPerformance1-efc
> Date: 6 August 2005
> Author: Eddie Cottongim
>
> Three Morphic performance improvements:
>
> -LazyLists seem to have a problem where they are not being lazy
> enough. #hUnadjustedScrollRange seemed to be forcing the installation
> of the entire list (I am not sure exactly why) thus negating the lazy
> quality. The method was also pretty slow and getting called a lot
> while scrolling. I've simplified the method and added a cache for this
> value.
>
> -StrikeFontSet has been optimized to use the bitblt text primitive for
> bytestrings. For the multibyte path, it was still possible to save a
> few sends for a noticable improvement.
>
> -Change Morph>>submorphs to be non-copying. This seems to be the
> concensus on the squeak-dev list of the right thing to do. It doesn't
> provide a noticable boost in normal circumstances but with very large
> numbers of morphs it prevents a lot of scaling problems.
>
> The overall impact is about 20% on the 10Browers test, about double
> the single byte text printing speed, and a 10-15% improvement on the
> multibyte string printing.
>
> "
>
> One note on font things, it seems to be a weird situation with
> StrikeFontSet/StrikeFont, so I only touched the paths that were
> getting hit a lot.
>
> Oh, also I'm having a math impairment moment, my % improvements might
> be off a bit.
>
> Benchmark results, lower is better: (Code follows)
>
> 10Browser test: (improvement)
> 3.8 base: 9574.2
> MP1: 7587.2 ~20%
> With the ST-80 Theme:
> 3.8 base 4584.2 MP1 4024.4 ~12%
> With Squeak 2.8: (reality check only)
> 2.8 base: 1565.6
>
> Text printing:
>
> singlebyte
> 3.8 base: 4609
> MP1: 2073 ~50%
> multi
> 3.8 base: 4906
> MP1: 4227 ~13%
>
>
>
> Code for 10Browers: (Thanks to Dan Ingalls)
>
> time _ 0.
> saveMorphs _ self currentWorld submorphs.
> 5 timesRepeat:[
> self currentWorld removeAllMorphs. "heh, heh"
> time _ time + (Time millisecondsToRun:
> [
> 1 to: 10 do: [:i | Browser fullOnClass: SystemDictionary selector:
> #abandonSources].
> self currentWorld submorphs do: [:m | m delete. self currentWorld
> doOneCycle]]).
> ].
> self currentWorld addAllMorphs: saveMorphs.
> time/5 asFloat "print it"
>
> Code for text printing: (Stolen from FontTest)
>
> text := '012345678012345678990123456789' asText.
> font := TextStyle default fontOfSize: 21.
> width _ font widthOfStringOrText: text.
> text addAttribute: (TextFontReference toFont: font).
> bb := (Form extent: width @ 30) getCanvas privatePort.
> bb combinationRule: Form paint.
>
> font installOn: bb foregroundColor: Color black backgroundColor:
> Color white.
> Time millisecondsToRun:[
> 10000 timesRepeat: [
> destPoint := font displayString: text on: bb from: 1 to: 30 at:
> 0 at 0 kern: 1.
> ].
> ]. "print it"
>
> "This postamble is useful to see if the test actually worked as
> opposed to just being fast..."
> width := text inject: 0 into: [:max :char | max + (font widthOf:
> char)].
> bb destForm asMorph openInHand. an ImageMorph(675)
>
>
>
>
>------------------------------------------------------------------------
>
>
>
>
More information about the Squeak-dev
mailing list
|