[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