|
|
|
|
|
by obarthel
1718 days ago
|
|
This is very hard to fix because the Workbench has to find every single icon file in a drawer, match it up against any drawers or files, then load the icon file and display it. There is no icon cache or, for that matter, no "these are the icons we last processed when we looked into this drawer" file. Whenever you ask Workbench to show the contents of a drawer you are starting a full scan of that drawer's contents with Workbench picking up, one directory entry at a time, what it finds. Put another way, finding and displaying the icons is strongly I/O bound and limited by what the file system can deliver. It has been like that since 1985/1986 and the fundamental architecture of Workbench has not changed since then. There is a large degree of freedom afforded by storing icons in individual files which impose no limitations on the size of the icons. You pay for that freedom by waiting for the icons to appear and the scanning finally finishing. Fun fact, the original Workbench design in the Kickstart 1.x ROMs acknowledged that reading the directory entries of a drawer one at a time was too slow, especially on floppy disk. The solution to the problem was to create ".info" cache files which listed every entry which had an icon file associated with it. Workbench would read that file unless the parent drawer's "last changed" time stamp was more recent than the ".info" file's and thereby skip a lot of unnecessary directory scanning: it just had to read those icon files and be done with it. One small problem about that cache: the floppy disk file system scattered file data and metadata widely across the medium which as a by-product increased the effort of retrieving it. |
|
Similar outcome with Ram Disk :). Its one thing to not display custom icons, its another to delay everything because you query for custom icons sequentially instead of displaying temporary ones.