Optimising query
Hilaire Fernandes
hilaire2006 at laposte.net
Wed Feb 21 18:27:23 UTC 2007
I have measured with MessageTally a method which basically read data on
a Magma DB to update a local morphic reprensetation (it is about hiding
some nodes in a graph represented with Morphs). The Magma server and
client are on two different Internet nodes through ADSL connections.
The method is bellow, and I have attached the MessageTally output. I am
interested to see how it could be optimized. From MessageTally, it is
clear a lot time is about waiting
(Leaves: 95.2% {5920ms} Semaphore>>waitTimeoutMSecs:). I guess it is
related to Internet latency or so?
hideSubCompetencies: aCompetencyMorph
| topComeptency morph |
topComeptency := aCompetencyMorph model.
topComeptency isSubCompetenciesHidden: true.
(model competenciesWithSuffisanceLinkTo: topComeptency)
do: [:child |
morph := view competencyMorph: child
self hideAllNecessaryLinks: morph.
self hideSubCompetencies: morph.
(model links where: [:e | (e owner equals: child)
& (e necessary equals: nil)])
do: [:link | (view linkMorph: link) hide].
morph hide]
AND:
Model>>competenciesWithSuffisanceLinkTo: aParentCompetency
^ (links
where: [:e | e parent equals: aParentCompetency])
collect: [:link | link owner]
-------------- next part --------------
- 6187 tallies, 6219 msec.
**Tree**
99.8% {6207ms} IFICompetencyEditorController>>hideSubCompetencies:
45.2% {2811ms} MagmaCollectionReader>>do:
|23.4% {1455ms} MagmaCollectionReader>>at:
| |23.4% {1455ms} MagmaCollectionReader>>at:ifOutOfBounds:
| | 23.4% {1455ms} MagmaCollectionReader>>primAt:ifOutOfBounds:
| | 23.4% {1455ms} MagmaCollectionReader>>loadFromIndex:pageSize:
| | 23.4% {1455ms} MagmaCollectionReader>>segmentContaining:
| | 23.4% {1455ms} MagmaCollectionReader>>refreshSegment:loadObjects:
| | 23.3% {1449ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
| | 23.3% {1449ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
| | 23.3% {1449ms} MagmaSession>>submit:
| | 23.3% {1449ms} MaTcpRequestServerLink>>submit:
| | 23.3% {1449ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
| | 22.9% {1424ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
| | 13.8% {858ms} MaClientSocket>>receiveInto:
| | |13.8% {858ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| | | 13.8% {858ms} Semaphore>>waitTimeoutMSecs:
| | 8.1% {504ms} Socket>>connectTo:port:
| | 8.1% {504ms} Socket>>connectTo:port:waitForConnectionFor:
| | 8.1% {504ms} Socket>>waitForConnectionFor:ifTimedOut:
| | 8.1% {504ms} Semaphore>>waitTimeoutMSecs:
|21.9% {1362ms} MagmaCollectionReader>>lastKnownSize
| 21.9% {1362ms} MagmaCollectionReader>>getNextSegmentAndLoad:
| 21.9% {1362ms} MagmaCollectionReader>>refreshSegment:loadObjects:
| 21.9% {1362ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
| 21.9% {1362ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
| 21.9% {1362ms} MagmaSession>>submit:
| 21.9% {1362ms} MaTcpRequestServerLink>>submit:
| 21.9% {1362ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
| 21.9% {1362ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
| 12.9% {802ms} MaClientSocket>>receiveInto:
| |12.9% {802ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| | 12.9% {802ms} Semaphore>>waitTimeoutMSecs:
| 8.3% {516ms} Socket>>connectTo:port:
| 8.3% {516ms} Socket>>connectTo:port:waitForConnectionFor:
| 8.3% {516ms} Socket>>waitForConnectionFor:ifTimedOut:
| 8.3% {516ms} Semaphore>>waitTimeoutMSecs:
23.1% {1437ms} IFICompetencyEditorController>>hideAllNecessaryLinks:
|23.0% {1430ms} MagmaCollectionReader>>do:
| 23.0% {1430ms} MagmaCollectionReader>>lastKnownSize
| 23.0% {1430ms} MagmaCollectionReader>>getNextSegmentAndLoad:
| 23.0% {1430ms} MagmaCollectionReader>>refreshSegment:loadObjects:
| 23.0% {1430ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
| 23.0% {1430ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
| 23.0% {1430ms} MagmaSession>>submit:
| 23.0% {1430ms} MaTcpRequestServerLink>>submit:
| 23.0% {1430ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
| 22.8% {1418ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
| 14.1% {877ms} MaClientSocket>>receiveInto:
| |14.1% {877ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| | 14.1% {877ms} Semaphore>>waitTimeoutMSecs:
| 8.1% {504ms} Socket>>connectTo:port:
| 8.1% {504ms} Socket>>connectTo:port:waitForConnectionFor:
| 8.1% {504ms} Socket>>waitForConnectionFor:ifTimedOut:
| 8.1% {504ms} Semaphore>>waitTimeoutMSecs:
20.3% {1262ms} IFICompetencyEditorController>>hideSubCompetencies:
|20.3% {1262ms} IFICompetencyEditorModel>>competenciesWithSuffisanceLinkTo:
| 20.3% {1262ms} MagmaCollectionReader>>collect:
| 20.3% {1262ms} MagmaCollectionReader>>do:
| 20.3% {1262ms} MagmaCollectionReader>>lastKnownSize
| 20.3% {1262ms} MagmaCollectionReader>>getNextSegmentAndLoad:
| 20.3% {1262ms} MagmaCollectionReader>>refreshSegment:loadObjects:
| 20.3% {1262ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
| 20.3% {1262ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
| 20.3% {1262ms} MagmaSession>>submit:
| 20.3% {1262ms} MaTcpRequestServerLink>>submit:
| 20.3% {1262ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
| 20.3% {1262ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
| 11.2% {697ms} MaClientSocket>>receiveInto:
| |11.2% {697ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| | 11.2% {697ms} Semaphore>>waitTimeoutMSecs:
| 8.1% {504ms} Socket>>connectTo:port:
| 8.1% {504ms} Socket>>connectTo:port:waitForConnectionFor:
| 8.1% {504ms} Socket>>waitForConnectionFor:ifTimedOut:
| 8.1% {504ms} Semaphore>>waitTimeoutMSecs:
11.2% {697ms} IFICompetencyEditorModel>>competenciesWithSuffisanceLinkTo:
11.2% {697ms} MagmaCollectionReader>>collect:
11.2% {697ms} MagmaCollectionReader>>do:
5.8% {361ms} MagmaCollectionReader>>at:
|5.8% {361ms} MagmaCollectionReader>>at:ifOutOfBounds:
| 5.8% {361ms} MagmaCollectionReader>>primAt:ifOutOfBounds:
| 5.8% {361ms} MagmaCollectionReader>>loadFromIndex:pageSize:
| 5.8% {361ms} MagmaCollectionReader>>segmentContaining:
| 5.8% {361ms} MagmaCollectionReader>>refreshSegment:loadObjects:
| 5.8% {361ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
| 5.8% {361ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
| 5.8% {361ms} MagmaSession>>submit:
| 5.8% {361ms} MaTcpRequestServerLink>>submit:
| 5.8% {361ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
| 5.8% {361ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
| 3.4% {211ms} MaClientSocket>>receiveInto:
| |3.4% {211ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| | 3.4% {211ms} Semaphore>>waitTimeoutMSecs:
| 2.1% {131ms} Socket>>connectTo:port:
| 2.1% {131ms} Socket>>connectTo:port:waitForConnectionFor:
| 2.1% {131ms} Socket>>waitForConnectionFor:ifTimedOut:
| 2.1% {131ms} Semaphore>>waitTimeoutMSecs:
5.4% {336ms} MagmaCollectionReader>>lastKnownSize
5.4% {336ms} MagmaCollectionReader>>getNextSegmentAndLoad:
5.4% {336ms} MagmaCollectionReader>>refreshSegment:loadObjects:
5.4% {336ms} MagmaCollection>>refreshSegment:where:...ze:using:loadObjects:
5.4% {336ms} MagmaSession>>refreshSegment:of:where...ize:using:loadObjects:
5.4% {336ms} MagmaSession>>submit:
5.4% {336ms} MaTcpRequestServerLink>>submit:
5.4% {336ms} MaTcpRequestServerLink>>getByteArrayResponseFor:
5.4% {336ms} MaClientSocket>>sendData:startingAt:count:waitForReplyIn:
3.1% {193ms} MaClientSocket>>receiveInto:
|3.1% {193ms} Socket>>waitForDataFor:ifClosed:ifTimedOut:
| 3.1% {193ms} Semaphore>>waitTimeoutMSecs:
2.0% {124ms} Socket>>connectTo:port:
2.0% {124ms} Socket>>connectTo:port:waitForConnectionFor:
2.0% {124ms} Socket>>waitForConnectionFor:ifTimedOut:
2.0% {124ms} Semaphore>>waitTimeoutMSecs:
**Leaves**
95.2% {5920ms} Semaphore>>waitTimeoutMSecs:
3.8% {236ms} Socket>>close
**Memory**
old +92,572 bytes
young +4,816 bytes
used +97,388 bytes
free -97,388 bytes
**GCs**
full 0 totalling 0ms (0.0% uptime)
incr 32 totalling 5ms (0.0% uptime), avg 0.0ms
tenures 1 (avg 32 GCs/tenure)
root table 0 overflows
More information about the Magma
mailing list