#TUNING by cg
authorClaus Gittinger <cg@exept.de>
Thu, 12 May 2016 16:57:20 +0200
changeset 3299 13b7e24a9074
parent 3298 d388699ae421
child 3300 0df87ed0b795
#TUNING by cg class: DirectoryView changed: #readMonitoringDirectory double scan of list eliminated (stupidity level decreased)
DirectoryView.st
--- a/DirectoryView.st	Thu May 12 02:29:54 2016 +0200
+++ b/DirectoryView.st	Thu May 12 16:57:20 2016 +0200
@@ -502,7 +502,7 @@
     readTask notNil ifTrue: [readTask terminate].
     readBlock :=
         [
-            |dir currentFilenames oldListOfFiles|
+            |dir currentFilenames oldListOfFiles listOfFiles|
 
             dir := directory asFilename.
             currentFilenames := OrderedCollection new.
@@ -517,23 +517,30 @@
                     ].
                 ].
             ].
-            oldListOfFiles := self listOfFiles copy.
+            listOfFiles := self listOfFiles.
+            
+            oldListOfFiles := listOfFiles copy.
             (currentFilenames asSortedCollection: [:f1 :f2| f1 baseName < f2 baseName]) asSet 
                 do: [:fileName| 
                     (oldListOfFiles detect: [:fileRow| fileRow fileName = fileName] ifNone: nil) isNil
                     ifTrue: [
-                        |nearestFileRow r|
-                        nearestFileRow := self listOfFiles indexOf: (self listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
+                        |nearestFileRow newRow r|
+                        
+                        newRow := FileRow new fileName: fileName asFilename.
+                        "/ cg: how stupid is that?
+                        "/ nearestFileRow := listOfFiles indexOf: (listOfFiles detect: [:fileRow| fileRow baseName > fileName baseName] ifNone: nil).
+                        nearestFileRow := listOfFiles findFirst:[:fileRow | fileRow baseName > fileName baseName].
                         nearestFileRow = 0
-                            ifTrue: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename)]
-                            ifFalse: [self listOfFiles add: (r := FileRow new fileName: fileName asFilename) beforeIndex: nearestFileRow].
+                            ifTrue: [listOfFiles add: newRow]
+                            ifFalse: [listOfFiles add: newRow beforeIndex: nearestFileRow].
                         monitoring ifTrue: [self selectionOfFile value: r].
                     ]
                 ].
-            self listOfFiles 
+                
+            listOfFiles 
                 reverseDo: [:fileRow|
                     (currentFilenames includes: fileRow fileName)
-                    ifFalse: [self listOfFiles remove: fileRow]
+                    ifFalse: [listOfFiles remove: fileRow]
                 ]
         ].
 
@@ -1050,5 +1057,9 @@
 
 version
     ^ '$Header$'
+!
+
+version_CVS
+    ^ '$Header$'
 ! !