[Seaside] i10n or speed?

Philippe Marschall philippe.marschall at gmail.com
Mon Mar 19 10:58:11 UTC 2007


Hi

Have you ever tried a counter in a recent version of Seaside? I don't
know about you but for such a simple application it is way too slow
for my taste. As part of the 2.8 cycle we look into ways of making
Seaside faster.

Attached you will find several traces for the counter application.
As you can see, an awful lot of time is spent to convert URLs to
String. Of that most time is spent in#encodeForHTTP.

So what do you find more important, that Seaside is fast or that is
supports non-ascii urls?

Cheers
Philippe

P.S.: the original mail had several traces more but was apparently too
big, maybe it will arrive later.
-------------- next part --------------
 - 158 tallies, 82 msec.

**Tree**
51.3% {42ms} MessageTally>>spyEvery:on:
  |51.3% {42ms} BlockContext>>ensure:
  |  51.3% {42ms} MethodContext>>tempAt:put:
48.1% {39ms} WASession>>incomingRequest:
  48.1% {39ms} WASession>>responseForRequest:
    48.1% {39ms} WASession>>performRequest:
      48.1% {39ms} WASession>>start:
        48.1% {39ms} WARenderLoopMain>>start:
          48.1% {39ms} WARenderLoop>>run
            48.1% {39ms} WARender>>go
              48.1% {39ms} WARender>>render
                46.8% {38ms} WARender>>buildResponse
                  44.9% {37ms} WAToolFrame(WAPresenter)>>renderWithContext:
                    44.9% {37ms} WAToolFrame>>renderContentOn:
                      19.6% {16ms} WADivTag(WATagBrush)>>with:
                        |19.6% {16ms} WADivTag(WATagBrush)>>openTag
                        |  19.6% {16ms} WAHtmlStreamDocument>>openTag:attributes:
                        |    19.6% {16ms} WAHtmlStreamDocument>>bodyStream
                        |      19.6% {16ms} WARenderedHtmlRoot(WAHtmlRoot)>>writeOn:
                        |        19.6% {16ms} WARenderedHtmlRoot(WAHtmlRoot)>>writeHeadOn:
                        |          19.6% {16ms} WALinkElement(WAHtmlElement)>>writeOn:
                        |            19.6% {16ms} WALinkElement(WAHtmlElement)>>printOpenTagOn:
                        |              17.7% {15ms} WAHtmlAttributes>>writeOn:
                        |                17.7% {15ms} WAHtmlAttributes>>writeKey:value:on:
                        |                  17.7% {15ms} WACanvas class>>encode:to:
                        |                    16.5% {14ms} WAUrl>>displayString
                        |                      16.5% {14ms} WAUrl>>urlWithQueryString
                        |                        16.5% {14ms} WAUrl>>pathString
                        |                          16.5% {14ms} ByteString(String)>>encodeForHTTP
                        |                            12.7% {10ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                        |                              |10.1% {8ms} TextConverter class>>newForEncoding:
                        |                              |  6.3% {5ms} Array(SequenceableCollection)>>includes:
                        |                              |    |6.3% {5ms} Array(SequenceableCollection)>>indexOf:
                        |                              |    |  6.3% {5ms} Array(SequenceableCollection)>>indexOf:ifAbsent:
                        |                              |    |    6.3% {5ms} Array(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
                        |                              |  3.2% {3ms} TextConverter class(Behavior)>>allSubclasses
                        |                            3.8% {3ms} Character>>isSafeForHTTP
                        |                              3.8% {3ms} Character>>isAlphaNumeric
                        |                                3.8% {3ms} Character>>isLetter
                        |                                  3.2% {3ms} Latin1Environment class(LanguageEnvironment class)>>isLetter:
                        |                                    3.2% {3ms} Unicode class>>isLetter:
                        |                                      3.2% {3ms} SparseLargeTable>>at:
                        |                                        2.5% {2ms} SparseLargeTable>>pvtCheckIndex:
                      19.0% {16ms} WAToolFrame>>renderToolbarOn:
                        |7.6% {6ms} WAToolFrame>>renderToolsOn:
                        |  |7.6% {6ms} WAAnchorTag>>with:
                        |  |  7.0% {6ms} WAAnchorTag(WATagBrush)>>with:
                        |  |    7.0% {6ms} WAAnchorTag(WATagBrush)>>openTag
                        |  |      7.0% {6ms} WAHtmlStreamDocument>>openTag:attributes:
                        |  |        7.0% {6ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |  |          7.0% {6ms} WAHtmlAttributes>>writeOn:
                        |  |            7.0% {6ms} WAHtmlAttributes>>writeKey:value:on:
                        |  |              7.0% {6ms} WACanvas class>>encode:to:
                        |  |                6.3% {5ms} WAUrl>>displayString
                        |  |                  6.3% {5ms} WAUrl>>urlWithQueryString
                        |  |                    4.4% {4ms} WAUrl>>queryString
                        |  |                      4.4% {4ms} WAUrl>>parameterString
                        |  |                        3.8% {3ms} ByteString(String)>>encodeForHTTP
                        |  |                          3.8% {3ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                        |  |                            3.8% {3ms} TextConverter class>>newForEncoding:
                        |  |                              3.2% {3ms} TextConverter class(Behavior)>>allSubclasses
                        |5.7% {5ms} WAToolFrame>>renderActionsOn:
                        |  |5.7% {5ms} WAAnchorTag>>on:of:
                        |  |  5.1% {4ms} WAAnchorTag>>with:
                        |  |    5.1% {4ms} WAAnchorTag(WATagBrush)>>with:
                        |  |      5.1% {4ms} WAAnchorTag(WATagBrush)>>openTag
                        |  |        5.1% {4ms} WAHtmlStreamDocument>>openTag:attributes:
                        |  |          5.1% {4ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |  |            5.1% {4ms} WAHtmlAttributes>>writeOn:
                        |  |              5.1% {4ms} WAHtmlAttributes>>writeKey:value:on:
                        |  |                5.1% {4ms} WACanvas class>>encode:to:
                        |  |                  4.4% {4ms} WAUrl>>displayString
                        |  |                    4.4% {4ms} WAUrl>>urlWithQueryString
                        |  |                      3.2% {3ms} WAUrl>>queryString
                        |  |                        3.2% {3ms} WAUrl>>parameterString
                        |  |                          2.5% {2ms} ByteString(String)>>encodeForHTTP
                        |  |                            2.5% {2ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                        |  |                              2.5% {2ms} TextConverter class>>newForEncoding:
                        |3.2% {3ms} WAToolFrame>>renderNewSessionOn:
                        |  3.2% {3ms} WAAnchorTag>>with:
                        |    3.2% {3ms} WAAnchorTag(WATagBrush)>>with:
                        |      3.2% {3ms} WAAnchorTag(WATagBrush)>>openTag
                        |        3.2% {3ms} WAHtmlStreamDocument>>openTag:attributes:
                        |          3.2% {3ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |            3.2% {3ms} WAHtmlAttributes>>writeOn:
                        |              3.2% {3ms} WAHtmlAttributes>>writeKey:value:on:
                        |                3.2% {3ms} WACanvas class>>encode:to:
                        |                  3.2% {3ms} WAUrl>>displayString
                        |                    3.2% {3ms} WAUrl>>urlWithQueryString
                      6.3% {5ms} WAToolFrame>>renderChildOn:
                        6.3% {5ms} WARenderCanvas(WACanvas)>>render:
                          6.3% {5ms} WACounter(WAComponent)>>renderOn:
                            6.3% {5ms} WACounter(WAPresenter)>>renderWithContext:
                              6.3% {5ms} WACounter>>renderContentOn:
                                6.3% {5ms} WAAnchorTag>>with:
                                  6.3% {5ms} WAAnchorTag(WATagBrush)>>with:
                                    5.7% {5ms} WAAnchorTag(WATagBrush)>>openTag
                                      5.7% {5ms} WAHtmlStreamDocument>>openTag:attributes:
                                        5.7% {5ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                                          5.7% {5ms} WAHtmlAttributes>>writeOn:
                                            5.7% {5ms} WAHtmlAttributes>>writeKey:value:on:
                                              5.7% {5ms} WACanvas class>>encode:to:
                                                5.7% {5ms} WAUrl>>displayString
                                                  5.7% {5ms} WAUrl>>urlWithQueryString
                                                    3.8% {3ms} WAUrl>>queryString
                                                      3.8% {3ms} WAUrl>>parameterString
                                                        3.2% {3ms} ByteString(String)>>encodeForHTTP
                                                          2.5% {2ms} Character>>isSafeForHTTP
                                                            2.5% {2ms} Character>>isAlphaNumeric
                                                              2.5% {2ms} Character>>isLetter
                                                                2.5% {2ms} Latin1Environment class(LanguageEnvironment class)>>isLetter:
                                                                  2.5% {2ms} Unicode class>>isLetter:

**Leaves**
51.3% {42ms} MethodContext>>tempAt:put:
6.3% {5ms} Array(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
3.2% {3ms} Character>>isOctetCharacter
2.5% {2ms} Character>>charCode
2.5% {2ms} SparseLargeTable>>pvtCheckIndex:

**Memory**
	old			+87,664 bytes
	young		-42,708 bytes
	used		+44,956 bytes
	free		-44,956 bytes

**GCs**
	full			0 totalling 0ms (0.0% uptime)
	incr		8 totalling 11ms (13.0% uptime), avg 1.0ms
	tenures		1 (avg 8 GCs/tenure)
	root table	0 overflows
-------------- next part --------------
 - 154 tallies, 79 msec.

**Tree**
51.3% {41ms} MessageTally>>spyEvery:on:
  |51.3% {41ms} BlockContext>>ensure:
  |  51.3% {41ms} MethodContext>>tempAt:put:
48.1% {38ms} WASession>>incomingRequest:
  48.1% {38ms} WASession>>responseForRequest:
    48.1% {38ms} WASession>>performRequest:
      48.1% {38ms} WASession>>start:
        48.1% {38ms} WARenderLoopMain>>start:
          48.1% {38ms} WARenderLoop>>run
            48.1% {38ms} WARender>>go
              48.1% {38ms} WARender>>render
                46.8% {37ms} WARender>>buildResponse
                  44.8% {35ms} WAToolFrame(WAPresenter)>>renderWithContext:
                    44.8% {35ms} WAToolFrame>>renderContentOn:
                      22.1% {17ms} WAToolFrame>>renderToolbarOn:
                        |7.8% {6ms} WAToolFrame>>renderToolsOn:
                        |  |7.8% {6ms} WAAnchorTag>>with:
                        |  |  7.8% {6ms} WAAnchorTag(WATagBrush)>>with:
                        |  |    7.8% {6ms} WAAnchorTag(WATagBrush)>>openTag
                        |  |      7.8% {6ms} WAHtmlStreamDocument>>openTag:attributes:
                        |  |        7.8% {6ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |  |          7.8% {6ms} WAHtmlAttributes>>writeOn:
                        |  |            7.8% {6ms} WAHtmlAttributes>>writeKey:value:on:
                        |  |              7.8% {6ms} WACanvas class>>encode:to:
                        |  |                5.8% {5ms} WAUrl>>displayString
                        |  |                  5.8% {5ms} WAUrl>>urlWithQueryString
                        |  |                    3.2% {3ms} WAUrl>>queryString
                        |  |                      3.2% {3ms} WAUrl>>parameterString
                        |  |                        3.2% {3ms} ByteString(String)>>encodeForHTTP
                        |  |                          3.2% {3ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                        |  |                            2.6% {2ms} TextConverter class>>newForEncoding:
                        |7.1% {6ms} WAToolFrame>>renderActionsOn:
                        |  |7.1% {6ms} WAAnchorTag>>on:of:
                        |  |  5.8% {5ms} WAAnchorTag>>with:
                        |  |    5.2% {4ms} WAAnchorTag(WATagBrush)>>with:
                        |  |      5.2% {4ms} WAAnchorTag(WATagBrush)>>openTag
                        |  |        5.2% {4ms} WAHtmlStreamDocument>>openTag:attributes:
                        |  |          5.2% {4ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |  |            5.2% {4ms} WAHtmlAttributes>>writeOn:
                        |  |              5.2% {4ms} WAHtmlAttributes>>writeKey:value:on:
                        |  |                5.2% {4ms} WACanvas class>>encode:to:
                        |  |                  3.9% {3ms} WAUrl>>displayString
                        |  |                    3.9% {3ms} WAUrl>>urlWithQueryString
                        |  |                      2.6% {2ms} WAUrl>>queryString
                        |  |                        2.6% {2ms} WAUrl>>parameterString
                        |3.2% {3ms} WAToolFrame>>renderNewSessionOn:
                        |  3.2% {3ms} WAAnchorTag>>with:
                        |    3.2% {3ms} WAAnchorTag(WATagBrush)>>with:
                        |      3.2% {3ms} WAAnchorTag(WATagBrush)>>openTag
                        |        3.2% {3ms} WAHtmlStreamDocument>>openTag:attributes:
                        |          3.2% {3ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                        |            3.2% {3ms} WAHtmlAttributes>>writeOn:
                        |              3.2% {3ms} WAHtmlAttributes>>writeKey:value:on:
                        |                3.2% {3ms} WACanvas class>>encode:to:
                        |                  3.2% {3ms} WAUrl>>displayString
                        |                    3.2% {3ms} WAUrl>>urlWithQueryString
                      12.3% {10ms} WADivTag(WATagBrush)>>with:
                        |12.3% {10ms} WADivTag(WATagBrush)>>openTag
                        |  12.3% {10ms} WAHtmlStreamDocument>>openTag:attributes:
                        |    12.3% {10ms} WAHtmlStreamDocument>>bodyStream
                        |      12.3% {10ms} WARenderedHtmlRoot(WAHtmlRoot)>>writeOn:
                        |        11.7% {9ms} WARenderedHtmlRoot(WAHtmlRoot)>>writeHeadOn:
                        |          11.7% {9ms} WALinkElement(WAHtmlElement)>>writeOn:
                        |            11.7% {9ms} WALinkElement(WAHtmlElement)>>printOpenTagOn:
                        |              11.7% {9ms} WAHtmlAttributes>>writeOn:
                        |                11.0% {9ms} WAHtmlAttributes>>writeKey:value:on:
                        |                  11.0% {9ms} WACanvas class>>encode:to:
                        |                    7.8% {6ms} WAUrl>>displayString
                        |                      |7.8% {6ms} WAUrl>>urlWithQueryString
                        |                      |  7.8% {6ms} WAUrl>>pathString
                        |                      |    7.8% {6ms} ByteString(String)>>encodeForHTTP
                        |                      |      7.1% {6ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                        |                      |        6.5% {5ms} TextConverter class>>newForEncoding:
                        |                      |          3.9% {3ms} TextConverter class(Behavior)>>allSubclasses
                        |                      |            2.6% {2ms} OrderedCollection(Collection)>>asSet
                        |                      |              2.6% {2ms} Set class(Collection class)>>withAll:
                        |                      |                2.6% {2ms} Set(Collection)>>addAll:
                        |                    3.2% {3ms} Array(SequenceableCollection)>>at:ifAbsent:
                        |                      2.6% {2ms} primitives
                      10.4% {8ms} WAToolFrame>>renderChildOn:
                        10.4% {8ms} WARenderCanvas(WACanvas)>>render:
                          10.4% {8ms} WACounter(WAComponent)>>renderOn:
                            10.4% {8ms} WACounter(WAPresenter)>>renderWithContext:
                              10.4% {8ms} WACounter>>renderContentOn:
                                10.4% {8ms} WAAnchorTag>>with:
                                  10.4% {8ms} WAAnchorTag(WATagBrush)>>with:
                                    10.4% {8ms} WAAnchorTag(WATagBrush)>>openTag
                                      10.4% {8ms} WAHtmlStreamDocument>>openTag:attributes:
                                        10.4% {8ms} WAHtmlStreamDocument>>writeOpenTag:attributes:on:
                                          10.4% {8ms} WAHtmlAttributes>>writeOn:
                                            10.4% {8ms} WAHtmlAttributes>>writeKey:value:on:
                                              10.4% {8ms} WACanvas class>>encode:to:
                                                8.4% {7ms} WAUrl>>displayString
                                                  8.4% {7ms} WAUrl>>urlWithQueryString
                                                    5.8% {5ms} WAUrl>>pathString
                                                      |5.8% {5ms} ByteString(String)>>encodeForHTTP
                                                      |  5.8% {5ms} ByteString(String)>>encodeForHTTPWithTextEncoding:conditionBlock:
                                                      |    5.8% {5ms} TextConverter class>>newForEncoding:
                                                      |      5.8% {5ms} TextConverter class(Behavior)>>allSubclasses
                                                      |        4.5% {4ms} OrderedCollection(Collection)>>asSet
                                                      |          4.5% {4ms} Set class(Collection class)>>withAll:
                                                      |            4.5% {4ms} Set(Collection)>>addAll:
                                                      |              4.5% {4ms} Set>>add:
                                                      |                3.2% {3ms} primitives
                                                    2.6% {2ms} WAUrl>>queryString
                                                      2.6% {2ms} WAUrl>>parameterString
                                                        2.6% {2ms} ByteString(String)>>encodeForHTTP

**Leaves**
51.3% {41ms} MethodContext>>tempAt:put:
7.1% {6ms} Array(SequenceableCollection)>>at:ifAbsent:
5.2% {4ms} Set>>add:
3.2% {3ms} SmallInteger(Magnitude)>>between:and:

**Memory**
	old			+82,084 bytes
	young		-36,428 bytes
	used		+45,656 bytes
	free		-45,656 bytes

**GCs**
	full			0 totalling 0ms (0.0% uptime)
	incr		8 totalling 10ms (13.0% uptime), avg 1.0ms
	tenures		1 (avg 8 GCs/tenure)
	root table	0 overflows


More information about the seaside mailing list