[squeak-dev] The Trunk: Monticello-ul.332.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Nov 13 04:30:40 UTC 2009
Andreas Raab uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-ul.332.mcz
==================== Summary ====================
Name: Monticello-ul.332
Author: ul
Time: 11 November 2009, 9:23:53 am
UUID: 7126e560-709c-b94c-84d9-cda50c54037f
Ancestors: Monticello-ul.331
- speed up MCFileRepositoryInspector by improving #packageList and caching the result. (~25x speedup with a respository of ~500 package versions of ~160 packages)
=============== Diff against Monticello-ul.331 ===============
Item was changed:
----- Method: MCFileRepositoryInspector>>packageList (in category 'morphic ui') -----
packageList
+
+ | result loadedPackages |
+ packageList ifNotNil: [ ^packageList ].
+ result := Set new: versions size.
+ versions do: [ :each | result add: each first ].
- | result |
- result := versions
- inject: Set new
- into: [ :set :each | set add: each first; yourself ].
-
- "sort loaded packages first, then alphabetically"
- result := result asSortedCollection: [:a :b |
- | loadedA loadedB |
- loadedA := loaded anySatisfy: [:each | (each copyUpToLast: $-) = a].
- loadedB := loaded anySatisfy: [:each | (each copyUpToLast: $-) = b].
- loadedA = loadedB
- ifTrue: [a < b]
- ifFalse: [loadedA]].
+ "sort loaded packages first, then alphabetically"
+ loadedPackages := Set new: loaded size.
+ loaded do: [ :each |
+ loadedPackages add: (each copyUpToLast: $-) ].
+ result := result asArray sort: [ :a :b |
+ | loadedA loadedB |
+ loadedA := loadedPackages includes: a.
+ loadedB := loadedPackages includes: b.
+ loadedA = loadedB
+ ifTrue: [ a < b ]
+ ifFalse: [ loadedA ] ].
+
+ ^packageList := result collect: [ :each | self packageHighlight: each ]!
- ^result collect: [:each | self packageHighlight: each]!
Item was changed:
----- Method: MCFileRepositoryInspector>>refresh (in category 'as yet unclassified') -----
refresh
| packageNames name latest av |
packageNames := Set new.
+ packageList := nil.
versions := repository readableFileNames collect: [ :each |
name := (each copyUpToLast: $.) copyUpTo: $(.
name last isDigit ifFalse: [Array with: name with: '' with: '' with: each]
ifTrue:
[Array
with: (packageNames add: (name copyUpToLast: $-)) "pkg name"
with: ((name copyAfterLast: $-) copyUpTo: $.) "user"
with: ((name copyAfterLast: $-) copyAfter: $.) asInteger "version"
with: each]].
versions := versions select: [:each | (each at: 3) isNumber].
newer := Set new.
inherited := Set new.
loaded := Set new.
(MCWorkingCopy allManagers
" select: [ :each | packageNames includes: each packageName]")
do: [:each |
each ancestors do: [ :ancestor |
loaded add: ancestor name.
ancestor ancestorsDoWhileTrue: [:heir |
(inherited includes: heir name)
ifTrue: [false]
ifFalse: [inherited add: heir name. true]]].
latest := (versions select: [:v | v first = each package name])
detectMax: [:v | v third].
(latest notNil and: [
each ancestors allSatisfy: [:ancestor |
av := ((ancestor name copyAfterLast: $-) copyAfter: $.) asInteger.
av < latest third or: [
av = latest third and: [((ancestor name copyAfterLast: $-) copyUpTo: $.) ~= latest second]]]])
ifTrue: [newer add: each package name ]].
self changed: #packageList; changed: #versionList!
Item was changed:
MCVersionInspector subclass: #MCFileRepositoryInspector
+ instanceVariableNames: 'repository versions loaded newer inherited selectedPackage selectedVersion order versionInfo packageList'
- instanceVariableNames: 'repository versions loaded newer inherited selectedPackage selectedVersion order versionInfo'
classVariableNames: 'Order'
poolDictionaries: ''
category: 'Monticello-UI'!
More information about the Squeak-dev
mailing list
|