Hi all,
There's been plenty of hot discussions about parcel's and their loading speed on this list before.. so I thought I'd throw in some hard data to help out. I've got a spreadsheet that shows the load time of 'base parcels' - parcels that either come with VisualWorks or that rarely change. http://www.spiritshigh.com/load-times.xls These parcels are included in the base image for SWS's XML WithStyle product. They add a hefty 5mb's of code to our base image (which compresses down to around 2.5mb when we make the .exe). "Patched" means that while loading the parcels, the following alteration is made to the parcel load logic: SystemUtils class>>modifySystem: aBlock ^aBlock on: linkState do: [:ex | ex resume: false] This is undone at the end of the parcel loads and then 'SystemUtils linkSystem' is executed to ensure everything is linked up correctly. "Unpatched" means the parcels were loaded as per Cincom intended them, without any alterations to the system. On the second sheet there is a large graph showing the difference in the load times, but the "Speedup" column on the data sheet shows just how much of a difference the patch can sometimes make. Now, to really throw my spanner in to the works, I've shown the totals down the bottom. Even with the patch, it takes 21 seconds to load all these parcels. That's basically unacceptable for a desktop application :/. I've also included the time to load all of the parcels that have a reasonable speed up, excluding the ones that don't speed up. It still takes 7 seconds - that's on the "barely acceptable" edge of load times. I should point out that this is the base code, so on top of this the application code still has to load. The ultimate goal of the SRE and parcels, etc, was that a single small base image could load up all the parcels in a reasonable amount of time. We're not there yet obviously. With or without the patch loaded, the profile of loading all of these parcels is pretty consistent: 8.8% NameSpaceBindings>>lookup: 5.2% Object>>oneWayBecome: 3.8% Behavior>>bindingFor: 3.6% Behavior>>flushVMmethodCache 3.5% SequenceableCollection>>do: 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: 2.8% Class>>protectedBindingFor:modifiers: 2.5% NameSpaceSearchRules>>forNames:do: 2.1% Set>>initialIndexFor:boundedBy: ... cut at 2.0% Basically, to be able to 'live the dream' and load all the parcels in at startup (with as few exceptions as possible), I'd need the parcel load code to be at least 2-3 times faster than my patched loader. If that could be achieved, I'd package with the slowest loading parcels included in the base. This would then mean by executable would be much smaller than it is now and 'online upgrades' wouldn't be as costly to my users bandwidth. Some other interesting facts: If you take the base.im or visual.im clean images and remove all the parcels, you end up with a 3mb image - this isn't too bad, as under compression this is around 1.5mb + the VM is 2mb-ish. That really -would- be an ideal executable size for a pluggable base application. Cheers, Michael |
Hello Michael,
Sunday, March 5, 2006, 5:50:07 PM, you wrote: MLS> With or without the patch loaded, the profile of loading all of these MLS> parcels is pretty consistent: MLS> 8.8% NameSpaceBindings>>lookup: MLS> 5.2% Object>>>oneWayBecome: MLS> 3.8% Behavior>>>bindingFor: MLS> 3.6% Behavior>>>flushVMmethodCache MLS> 3.5% SequenceableCollection>>do: MLS> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: MLS> 2.8% Class>>>protectedBindingFor:modifiers: MLS> 2.5% NameSpaceSearchRules>>forNames:do: MLS> 2.1% Set>>>initialIndexFor:boundedBy: MLS> ... cut at 2.0% A quick test of my dev image showed over 2000 NameSpaceBindings, of which only 6 had different elements with equal hashes. That's rather minimal collisions, so it can't be thrashing. Looking a bit further, it seems that NameSpaceBindings only hold things that satisfy isKindOf: VariableBinding. Interestingly, VariableBinding implements = in terms of ==, but hash is inherited and it is implemented in terms of self key hash. Maybe you can get better performance by implementing hash for VariableBinding as the primitive for identity hash (but you will have to rehash all NameSpaceBindings for that to take effect). If you do that, then you will probably be able to fix lookup: in NameSpaceBindings so that it does not compare keys. However, that would make the superclass of NameSpaceBindings seem a bit inadequate because the whole thing would behave like an IdentitySet... I'm not sure if these 2 cents help, but hopefully they do. Also, why is NameSpaceBindings not an IdentityDictionary??? -- Best regards, Andres mailto:[hidden email] |
In reply to this post by Michael Lucas-Smith
Michael:
your wrote: > Some other interesting facts: If you take the base.im or visual.im > clean images and remove all the parcels, you end up with a 3mb image - > this isn't too bad, as under compression this is around 1.5mb + the VM > is 2mb-ish. That really -would- be an ideal executable size for a > pluggable base application. Do you actually have a base image i.e. a 3mb image which still can load parcels? -Charles On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith <[hidden email]> wrote: > Hi all, > > There's been plenty of hot discussions about parcel's and their > loading speed on this list before.. so I thought I'd throw in some > hard data to help out. > > I've got a spreadsheet that shows the load time of 'base parcels' - > parcels that either come with VisualWorks or that rarely change. > http://www.spiritshigh.com/load-times.xls > > These parcels are included in the base image for SWS's XML > WithStyle product. They add a hefty 5mb's of code to our base image > (which compresses down to around 2.5mb when we make the .exe). > > "Patched" means that while loading the parcels, the following > alteration is made to the parcel load logic: > > SystemUtils class>>modifySystem: aBlock > ^aBlock on: linkState do: [:ex | ex resume: false] > > This is undone at the end of the parcel loads and then 'SystemUtils > linkSystem' is executed to ensure everything is linked up correctly. > > "Unpatched" means the parcels were loaded as per Cincom intended them, > without any alterations to the system. > > On the second sheet there is a large graph showing the difference in > the load times, but the "Speedup" column on the data sheet shows just > how much of a difference the patch can sometimes make. > > Now, to really throw my spanner in to the works, I've shown the totals > down the bottom. Even with the patch, it takes 21 seconds to load all > these parcels. That's basically unacceptable for a desktop application > :/. I've also included the time to load all of the parcels that have a > reasonable speed up, excluding the ones that don't speed up. It still > takes 7 seconds - that's on the "barely acceptable" edge of load > times. > > I should point out that this is the base code, so on top of this the > application code still has to load. > > The ultimate goal of the SRE and parcels, etc, was that a single small > base image could load up all the parcels in a reasonable amount of > time. We're not there yet obviously. > > With or without the patch loaded, the profile of loading all of these > parcels is pretty consistent: > > 8.8% NameSpaceBindings>>lookup: > 5.2% Object>>oneWayBecome: > 3.8% Behavior>>bindingFor: > 3.6% Behavior>>flushVMmethodCache > 3.5% SequenceableCollection>>do: > 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: > 2.8% Class>>protectedBindingFor:modifiers: > 2.5% NameSpaceSearchRules>>forNames:do: > 2.1% Set>>initialIndexFor:boundedBy: > ... cut at 2.0% > > Basically, to be able to 'live the dream' and load all the parcels in > at startup (with as few exceptions as possible), I'd need the > parcel load code to be at least 2-3 times faster than my patched > loader. > > If that could be achieved, I'd package with the slowest loading > parcels included in the base. This would then mean by executable would > be much smaller than it is now and 'online upgrades' wouldn't be as > costly to my users bandwidth. > > Some other interesting facts: If you take the base.im or visual.im > clean images and remove all the parcels, you end up with a 3mb image - > this isn't too bad, as under compression this is around 1.5mb + the VM > is 2mb-ish. That really -would- be an ideal executable size for a > pluggable base application. > > Cheers, > Michael > -- Charles A. Monteiro |
Yes it loads parcels just fine an' dandy. Actually with compression, I believe it'll be 1.5mb ish.. I can redo the experiment if you want and create scripts to make such an image.. are you interested?
Cheers, Michael > Michael: > your wrote: >> Some other interesting facts: If you take the base.im or visual.im >> clean images and remove all the parcels, you end up with a 3mb image - >> this isn't too bad, as under compression this is around 1.5mb + the VM >> is 2mb-ish. That really -would- be an ideal executable size for a >> pluggable base application. > Do you actually have a base image i.e. a 3mb image which still can load > parcels? > -Charles > On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith > <[hidden email]> wrote: >> Hi all, >> There's been plenty of hot discussions about parcel's and their >> loading speed on this list before.. so I thought I'd throw in some >> hard data to help out. >> I've got a spreadsheet that shows the load time of 'base parcels' - >> parcels that either come with VisualWorks or that rarely change. >> http://www.spiritshigh.com/load-times.xls >> These parcels are included in the base image for SWS's XML >> WithStyle product. They add a hefty 5mb's of code to our base image >> (which compresses down to around 2.5mb when we make the .exe). >> "Patched" means that while loading the parcels, the following >> alteration is made to the parcel load logic: >> SystemUtils class>>modifySystem: aBlock >> ^aBlock on: linkState do: [:ex | ex resume: false] >> This is undone at the end of the parcel loads and then 'SystemUtils >> linkSystem' is executed to ensure everything is linked up correctly. >> "Unpatched" means the parcels were loaded as per Cincom intended them, >> without any alterations to the system. >> On the second sheet there is a large graph showing the difference in >> the load times, but the "Speedup" column on the data sheet shows just >> how much of a difference the patch can sometimes make. >> Now, to really throw my spanner in to the works, I've shown the totals >> down the bottom. Even with the patch, it takes 21 seconds to load all >> these parcels. That's basically unacceptable for a desktop application >> :/. I've also included the time to load all of the parcels that have a >> reasonable speed up, excluding the ones that don't speed up. It still >> takes 7 seconds - that's on the "barely acceptable" edge of load >> times. >> I should point out that this is the base code, so on top of this the >> application code still has to load. >> The ultimate goal of the SRE and parcels, etc, was that a single small >> base image could load up all the parcels in a reasonable amount of >> time. We're not there yet obviously. >> With or without the patch loaded, the profile of loading all of these >> parcels is pretty consistent: >> 8.8% NameSpaceBindings>>lookup: >> 5.2% Object>>oneWayBecome: >> 3.8% Behavior>>bindingFor: >> 3.6% Behavior>>flushVMmethodCache >> 3.5% SequenceableCollection>>do: >> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: >> 2.8% Class>>protectedBindingFor:modifiers: >> 2.5% NameSpaceSearchRules>>forNames:do: >> 2.1% Set>>initialIndexFor:boundedBy: >> ... cut at 2.0% >> Basically, to be able to 'live the dream' and load all the parcels in >> at startup (with as few exceptions as possible), I'd need the >> parcel load code to be at least 2-3 times faster than my patched >> loader. >> If that could be achieved, I'd package with the slowest loading >> parcels included in the base. This would then mean by executable would >> be much smaller than it is now and 'online upgrades' wouldn't be as >> costly to my users bandwidth. >> Some other interesting facts: If you take the base.im or visual.im >> clean images and remove all the parcels, you end up with a 3mb image - >> this isn't too bad, as under compression this is around 1.5mb + the VM >> is 2mb-ish. That really -would- be an ideal executable size for a >> pluggable base application. >> Cheers, >> Michael |
In reply to this post by Michael Lucas-Smith
Hi Michael
I'd be interested in this. One experiment I did once was start with the 7.3.1 beta base image add all the parcels we use and then add our parcel. The size of the result was only about 15% larger than our build via the RTP. So my thinking was to add a build menu item that will save a Pundle as a parcel and load it and any pre-reqs into a base image. This would be quite a nice alternative build mechanism. Joerg ----- Joerg Beekmann DeepCove Labs 4th floor 595 Howe Street Vancouver, BC, V6C 2T5 voice +1.604.689.0322 fax +1.604.689.0311 [hidden email] CONFIDENTIALITY NOTICE Unless otherwise indicated this email contains information that is private and confidential. If you have received it in error, please notify the sender and delete this message along with any attachments. > -----Original Message----- > From: Michael Lucas-Smith [mailto:michael.lucas- > [hidden email]] > Sent: Monday, March 13, 2006 10:36 PM > To: Charles A. Monteiro > Cc: [hidden email] > Subject: Re[2]: Parcel load times > > Yes it loads parcels just fine an' dandy. Actually with compression, I > believe it'll be 1.5mb ish.. I can redo the experiment if you want and > create scripts to make such an image.. are you interested? > > Cheers, > Michael > > > Michael: > > > your wrote: > > >> Some other interesting facts: If you take the base.im or visual.im > >> clean images and remove all the parcels, you end up with a 3mb > >> this isn't too bad, as under compression this is around 1.5mb + the VM > >> is 2mb-ish. That really -would- be an ideal executable size for a > >> pluggable base application. > > > Do you actually have a base image i.e. a 3mb image which still can load > > parcels? > > > -Charles > > > On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith > > <[hidden email]> wrote: > > >> Hi all, > > >> There's been plenty of hot discussions about parcel's and their > >> loading speed on this list before.. so I thought I'd throw in some > >> hard data to help out. > > >> I've got a spreadsheet that shows the load time of 'base parcels' - > >> parcels that either come with VisualWorks or that rarely change. > >> http://www.spiritshigh.com/load-times.xls > > >> These parcels are included in the base image for SWS's XML > >> WithStyle product. They add a hefty 5mb's of code to our base image > >> (which compresses down to around 2.5mb when we make the .exe). > > >> "Patched" means that while loading the parcels, the following > >> alteration is made to the parcel load logic: > > >> SystemUtils class>>modifySystem: aBlock > >> ^aBlock on: linkState do: [:ex | ex resume: false] > > >> This is undone at the end of the parcel loads and then 'SystemUtils > >> linkSystem' is executed to ensure everything is linked up > > >> "Unpatched" means the parcels were loaded as per Cincom intended them, > >> without any alterations to the system. > > >> On the second sheet there is a large graph showing the difference in > >> the load times, but the "Speedup" column on the data sheet shows just > >> how much of a difference the patch can sometimes make. > > >> Now, to really throw my spanner in to the works, I've shown the totals > >> down the bottom. Even with the patch, it takes 21 seconds to load all > >> these parcels. That's basically unacceptable for a desktop application > >> :/. I've also included the time to load all of the parcels that have a > >> reasonable speed up, excluding the ones that don't speed up. It still > >> takes 7 seconds - that's on the "barely acceptable" edge of load > >> times. > > >> I should point out that this is the base code, so on top of this the > >> application code still has to load. > > >> The ultimate goal of the SRE and parcels, etc, was that a single small > >> base image could load up all the parcels in a reasonable amount of > >> time. We're not there yet obviously. > > >> With or without the patch loaded, the profile of loading all of these > >> parcels is pretty consistent: > > >> 8.8% NameSpaceBindings>>lookup: > >> 5.2% Object>>oneWayBecome: > >> 3.8% Behavior>>bindingFor: > >> 3.6% Behavior>>flushVMmethodCache > >> 3.5% SequenceableCollection>>do: > >> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: > >> 2.8% Class>>protectedBindingFor:modifiers: > >> 2.5% NameSpaceSearchRules>>forNames:do: > >> 2.1% Set>>initialIndexFor:boundedBy: > >> ... cut at 2.0% > > >> Basically, to be able to 'live the dream' and load all the parcels > >> at startup (with as few exceptions as possible), I'd need the > >> parcel load code to be at least 2-3 times faster than my patched > >> loader. > > >> If that could be achieved, I'd package with the slowest loading > >> parcels included in the base. This would then mean by executable would > >> be much smaller than it is now and 'online upgrades' wouldn't be as > >> costly to my users bandwidth. > > >> Some other interesting facts: If you take the base.im or visual.im > >> clean images and remove all the parcels, you end up with a 3mb image - > >> this isn't too bad, as under compression this is around 1.5mb + the VM > >> is 2mb-ish. That really -would- be an ideal executable size for a > >> pluggable base application. > > >> Cheers, > >> Michael > > > |
I just conducted the experiment again to make sure I wasn't talking out my ass ;)
The final running image is 3,385kb This includes all the platform's UI's, so it really is a universal image. It can load up a parcel on startup - but the startup code is really up to you to do how you want it.. fixed parcel name? command line parameter? etc... I start from visual.im which is 11,078kb using VisualWorks 7.4 I then run the following script: | packages bundles | Tools.Workbook allInstances do: [:each | each closeAndUnschedule]. packages := Store.PackageModel allInstances select: [:ea | #( 'OldBrowsers' 'Tools-Trippy' 'Tools-Workspace' 'Tools-Changes' 'Tools-Parcel Manager' 'Tools-File Browser' ) includes: ea name]. bundles := Store.BundleModel allInstances select: [:ea | #( 'Tools-Debugger' 'Tools-Refactoring Browser' ) includes: ea name]. [(bundles asSortedCollection: [:a :b | a name < b name]) do: [:each | each unloadFromImage]. (packages asSortedCollection: [:a :b | a name < b name]) do: [:each | each unloadFromImage]] on: Warning do: [:sig | sig resume: true] If you save the image at this point, it will be 8,422kb - the base.im that comes in the preview\packaging directory is 8,604kb so already we're winning ;) Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except that I also use compacted compiled methods, you end up with a runtime.im that is 7,500kb. I then run imageCompress against it and I end up with a compressed.im that is the final size of 3,385kb Naturally, this could be taken further - the VW settings could be removed, the launcher could be removed, etc.. but the producer is very easy at this point and you can still actually -use- the shrunken image if you want. So! Have at it all.. is this a good way to make a base? I personally think so. If you whack the windows VM .exe on to it, you end up with a base executable that is 4,006kb. Not bad really. Cheers, Michael > Hi Michael > I'd be interested in this. One experiment I did once was start with the > 7.3.1 beta base image add all the parcels we use and then add our > parcel. The size of the result was only about 15% larger than our build > via the RTP. So my thinking was to add a build menu item that will save > a Pundle as a parcel and load it and any pre-reqs into a base image. > This would be quite a nice alternative build mechanism. > Joerg > ----- > Joerg Beekmann > DeepCove Labs > 4th floor 595 Howe Street > Vancouver, BC, V6C 2T5 > voice +1.604.689.0322 > fax +1.604.689.0311 > [hidden email] > > CONFIDENTIALITY NOTICE > Unless otherwise indicated this email contains information that is > private > and confidential. If you have received it in error, please notify the > sender > and delete this message along with any attachments. >> -----Original Message----- >> From: Michael Lucas-Smith [mailto:michael.lucas- >> [hidden email]] >> Sent: Monday, March 13, 2006 10:36 PM >> To: Charles A. Monteiro >> Cc: [hidden email] >> Subject: Re[2]: Parcel load times >> >> Yes it loads parcels just fine an' dandy. Actually with compression, I >> believe it'll be 1.5mb ish.. I can redo the experiment if you want and >> create scripts to make such an image.. are you interested? >> >> Cheers, >> Michael >> >> > Michael: >> >> > your wrote: >> >> >> Some other interesting facts: If you take the base.im or visual.im >> >> clean images and remove all the parcels, you end up with a 3mb > image - >> >> this isn't too bad, as under compression this is around 1.5mb + the > VM >> >> is 2mb-ish. That really -would- be an ideal executable size for a >> >> pluggable base application. >> >> > Do you actually have a base image i.e. a 3mb image which still can > load >> > parcels? >> >> > -Charles >> >> > On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith >> > <[hidden email]> wrote: >> >> >> Hi all, >> >> >> There's been plenty of hot discussions about parcel's and their >> >> loading speed on this list before.. so I thought I'd throw in some >> >> hard data to help out. >> >> >> I've got a spreadsheet that shows the load time of 'base parcels' - >> >> parcels that either come with VisualWorks or that rarely change. >> >> http://www.spiritshigh.com/load-times.xls >> >> >> These parcels are included in the base image for SWS's XML >> >> WithStyle product. They add a hefty 5mb's of code to our base image >> >> (which compresses down to around 2.5mb when we make the .exe). >> >> >> "Patched" means that while loading the parcels, the following >> >> alteration is made to the parcel load logic: >> >> >> SystemUtils class>>modifySystem: aBlock >> >> ^aBlock on: linkState do: [:ex | ex resume: false] >> >> >> This is undone at the end of the parcel loads and then 'SystemUtils >> >> linkSystem' is executed to ensure everything is linked up > correctly. >> >> >> "Unpatched" means the parcels were loaded as per Cincom intended > them, >> >> without any alterations to the system. >> >> >> On the second sheet there is a large graph showing the difference > in >> >> the load times, but the "Speedup" column on the data sheet shows > just >> >> how much of a difference the patch can sometimes make. >> >> >> Now, to really throw my spanner in to the works, I've shown the > totals >> >> down the bottom. Even with the patch, it takes 21 seconds to load > all >> >> these parcels. That's basically unacceptable for a desktop > application >> >> :/. I've also included the time to load all of the parcels that > have a >> >> reasonable speed up, excluding the ones that don't speed up. It > still >> >> takes 7 seconds - that's on the "barely acceptable" edge of load >> >> times. >> >> >> I should point out that this is the base code, so on top of this > the >> >> application code still has to load. >> >> >> The ultimate goal of the SRE and parcels, etc, was that a single > small >> >> base image could load up all the parcels in a reasonable amount of >> >> time. We're not there yet obviously. >> >> >> With or without the patch loaded, the profile of loading all of > these >> >> parcels is pretty consistent: >> >> >> 8.8% NameSpaceBindings>>lookup: >> >> 5.2% Object>>oneWayBecome: >> >> 3.8% Behavior>>bindingFor: >> >> 3.6% Behavior>>flushVMmethodCache >> >> 3.5% SequenceableCollection>>do: >> >> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: >> >> 2.8% Class>>protectedBindingFor:modifiers: >> >> 2.5% NameSpaceSearchRules>>forNames:do: >> >> 2.1% Set>>initialIndexFor:boundedBy: >> >> ... cut at 2.0% >> >> >> Basically, to be able to 'live the dream' and load all the parcels > in >> >> at startup (with as few exceptions as possible), I'd need the >> >> parcel load code to be at least 2-3 times faster than my patched >> >> loader. >> >> >> If that could be achieved, I'd package with the slowest loading >> >> parcels included in the base. This would then mean by executable > would >> >> be much smaller than it is now and 'online upgrades' wouldn't be as >> >> costly to my users bandwidth. >> >> >> Some other interesting facts: If you take the base.im or visual.im >> >> clean images and remove all the parcels, you end up with a 3mb > image - >> >> this isn't too bad, as under compression this is around 1.5mb + the > VM >> >> is 2mb-ish. That really -would- be an ideal executable size for a >> >> pluggable base application. >> >> >> Cheers, >> >> Michael >> >> >> |
At 01:59 AM 3/14/2006, Michael Lucas-Smith wrote:
>Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except that I also use compacted compiled methods, you end up with a runtime.im that is 7,500kb. I note the following from the RTP help text. Also, I seem to recall some experiments where using the "compact" compiled methods actually took more space. - Use compact compiled methods CompiledMethod objects contain pointers to source code and other objects not used in the runtime image. This will option will cause a replacement class to be used eliminating the extra storage needed for the pointers. Note that historically this was most useful when using ENVY/Developer. For normal methods, the savings are minimal. -- Alan Knight [|], Cincom Smalltalk Development [hidden email] [hidden email] http://www.cincom.com/smalltalk "The Static Typing Philosophy: Make it fast. Make it right. Make it run." - Niall Ross |
I'm using the latest published version of Pollock. I have a subclass of
UserInterface and I wanted to tweak the behavior of the close method. Just to start I overrode close in UserInterface and put a breakpoint in it, but my method doesn't seem to get invoked when I close the window using the mouse or keyboard. So I put a breakpoint in the close method on my UserInterface subclass' windowClass (a subclass of ApplicationWindow). Nothing there either. What am I missing? -Carl Gundel, author of Liberty BASIC http://www.libertybasic.com |
I use the Closed announcement of the mainWindow to customize closing:
hookupWindow super hookupWindow. self mainWindow when: Closed send: #release to: self. Cheers, Christian > -----Ursprüngliche Nachricht----- > Von: Carl Gundel [mailto:[hidden email]] > Gesendet: Dienstag, 14. März 2006 15:06 > An: [hidden email] > Betreff: [7.4][Pollock]What close method? > > > I'm using the latest published version of Pollock. I have a > subclass of > UserInterface and I wanted to tweak the behavior of the close > method. Just > to start I overrode close in UserInterface and put a > breakpoint in it, but > my method doesn't seem to get invoked when I close the window > using the > mouse or keyboard. So I put a breakpoint in the close method on my > UserInterface subclass' windowClass (a subclass of > ApplicationWindow). > Nothing there either. > > What am I missing? > > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com > > > |
In reply to this post by Michael Lucas-Smith
yes
On Tue, 14 Mar 2006 01:35:50 -0500, Michael Lucas-Smith <[hidden email]> wrote: > Yes it loads parcels just fine an' dandy. Actually with compression, I > believe it'll be 1.5mb ish.. I can redo the experiment if you want and > create scripts to make such an image.. are you interested? > > Cheers, > Michael > >> Michael: > >> your wrote: > >>> Some other interesting facts: If you take the base.im or visual.im >>> clean images and remove all the parcels, you end up with a 3mb image - >>> this isn't too bad, as under compression this is around 1.5mb + the VM >>> is 2mb-ish. That really -would- be an ideal executable size for a >>> pluggable base application. > >> Do you actually have a base image i.e. a 3mb image which still can load >> parcels? > >> -Charles > >> On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith >> <[hidden email]> wrote: > >>> Hi all, > >>> There's been plenty of hot discussions about parcel's and their >>> loading speed on this list before.. so I thought I'd throw in some >>> hard data to help out. > >>> I've got a spreadsheet that shows the load time of 'base parcels' - >>> parcels that either come with VisualWorks or that rarely change. >>> http://www.spiritshigh.com/load-times.xls > >>> These parcels are included in the base image for SWS's XML >>> WithStyle product. They add a hefty 5mb's of code to our base image >>> (which compresses down to around 2.5mb when we make the .exe). > >>> "Patched" means that while loading the parcels, the following >>> alteration is made to the parcel load logic: > >>> SystemUtils class>>modifySystem: aBlock >>> ^aBlock on: linkState do: [:ex | ex resume: false] > >>> This is undone at the end of the parcel loads and then 'SystemUtils >>> linkSystem' is executed to ensure everything is linked up correctly. > >>> "Unpatched" means the parcels were loaded as per Cincom intended them, >>> without any alterations to the system. > >>> On the second sheet there is a large graph showing the difference in >>> the load times, but the "Speedup" column on the data sheet shows just >>> how much of a difference the patch can sometimes make. > >>> Now, to really throw my spanner in to the works, I've shown the totals >>> down the bottom. Even with the patch, it takes 21 seconds to load all >>> these parcels. That's basically unacceptable for a desktop application >>> :/. I've also included the time to load all of the parcels that have a >>> reasonable speed up, excluding the ones that don't speed up. It still >>> takes 7 seconds - that's on the "barely acceptable" edge of load >>> times. > >>> I should point out that this is the base code, so on top of this the >>> application code still has to load. > >>> The ultimate goal of the SRE and parcels, etc, was that a single small >>> base image could load up all the parcels in a reasonable amount of >>> time. We're not there yet obviously. > >>> With or without the patch loaded, the profile of loading all of these >>> parcels is pretty consistent: > >>> 8.8% NameSpaceBindings>>lookup: >>> 5.2% Object>>oneWayBecome: >>> 3.8% Behavior>>bindingFor: >>> 3.6% Behavior>>flushVMmethodCache >>> 3.5% SequenceableCollection>>do: >>> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: >>> 2.8% Class>>protectedBindingFor:modifiers: >>> 2.5% NameSpaceSearchRules>>forNames:do: >>> 2.1% Set>>initialIndexFor:boundedBy: >>> ... cut at 2.0% > >>> Basically, to be able to 'live the dream' and load all the parcels in >>> at startup (with as few exceptions as possible), I'd need the >>> parcel load code to be at least 2-3 times faster than my patched >>> loader. > >>> If that could be achieved, I'd package with the slowest loading >>> parcels included in the base. This would then mean by executable would >>> be much smaller than it is now and 'online upgrades' wouldn't be as >>> costly to my users bandwidth. > >>> Some other interesting facts: If you take the base.im or visual.im >>> clean images and remove all the parcels, you end up with a 3mb image - >>> this isn't too bad, as under compression this is around 1.5mb + the VM >>> is 2mb-ish. That really -would- be an ideal executable size for a >>> pluggable base application. > >>> Cheers, >>> Michael > > > -- Charles A. Monteiro |
In reply to this post by Joerg Beekmann, DeepCove Labs (YVR)
my current SRE :) is about 6 mb with compression but I did not do anything
but take what was provided by Cincom i.e. the base.im. Also my SRE is "network enabled" i.e. all the NET stuff is in there including some encryption and eventually it will have Opentalk at least that which is needed to support Opentalk ST-ST. I feel that a typical client SRE would probably have all of this pre-loaded. I also believe that we should have different SREs for different purposes i.e. typical client, typical headless server, an SRE for PocketPC etc. The issue here of course is the trade-off between runtime loading of required parcels and size of the SRE. I doubt if Michael's SRE has all of this pre-loaded (typical client SRE) but perhaps his strategy would be able to produce a smaller SRE i.e. it would be great if I could get it down to 3.5 mb compressed. -Charles On Tue, 14 Mar 2006 01:49:08 -0500, Joerg Beekmann <[hidden email]> wrote: > Hi Michael > > I'd be interested in this. One experiment I did once was start with the > 7.3.1 beta base image add all the parcels we use and then add our > parcel. The size of the result was only about 15% larger than our build > via the RTP. So my thinking was to add a build menu item that will save > a Pundle as a parcel and load it and any pre-reqs into a base image. > This would be quite a nice alternative build mechanism. > > Joerg > > ----- > Joerg Beekmann > DeepCove Labs > 4th floor 595 Howe Street > Vancouver, BC, V6C 2T5 > voice +1.604.689.0322 > fax +1.604.689.0311 > [hidden email] > > CONFIDENTIALITY NOTICE > Unless otherwise indicated this email contains information that is > private > and confidential. If you have received it in error, please notify the > sender > and delete this message along with any attachments. >> -----Original Message----- >> From: Michael Lucas-Smith [mailto:michael.lucas- >> [hidden email]] >> Sent: Monday, March 13, 2006 10:36 PM >> To: Charles A. Monteiro >> Cc: [hidden email] >> Subject: Re[2]: Parcel load times >> >> Yes it loads parcels just fine an' dandy. Actually with compression, I >> believe it'll be 1.5mb ish.. I can redo the experiment if you want and >> create scripts to make such an image.. are you interested? >> >> Cheers, >> Michael >> >> > Michael: >> >> > your wrote: >> >> >> Some other interesting facts: If you take the base.im or visual.im >> >> clean images and remove all the parcels, you end up with a 3mb > image - >> >> this isn't too bad, as under compression this is around 1.5mb + the > VM >> >> is 2mb-ish. That really -would- be an ideal executable size for a >> >> pluggable base application. >> >> > Do you actually have a base image i.e. a 3mb image which still can > load >> > parcels? >> >> > -Charles >> >> > On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith >> > <[hidden email]> wrote: >> >> >> Hi all, >> >> >> There's been plenty of hot discussions about parcel's and their >> >> loading speed on this list before.. so I thought I'd throw in some >> >> hard data to help out. >> >> >> I've got a spreadsheet that shows the load time of 'base parcels' - >> >> parcels that either come with VisualWorks or that rarely change. >> >> http://www.spiritshigh.com/load-times.xls >> >> >> These parcels are included in the base image for SWS's XML >> >> WithStyle product. They add a hefty 5mb's of code to our base image >> >> (which compresses down to around 2.5mb when we make the .exe). >> >> >> "Patched" means that while loading the parcels, the following >> >> alteration is made to the parcel load logic: >> >> >> SystemUtils class>>modifySystem: aBlock >> >> ^aBlock on: linkState do: [:ex | ex resume: false] >> >> >> This is undone at the end of the parcel loads and then 'SystemUtils >> >> linkSystem' is executed to ensure everything is linked up > correctly. >> >> >> "Unpatched" means the parcels were loaded as per Cincom intended > them, >> >> without any alterations to the system. >> >> >> On the second sheet there is a large graph showing the difference > in >> >> the load times, but the "Speedup" column on the data sheet shows > just >> >> how much of a difference the patch can sometimes make. >> >> >> Now, to really throw my spanner in to the works, I've shown the > totals >> >> down the bottom. Even with the patch, it takes 21 seconds to load > all >> >> these parcels. That's basically unacceptable for a desktop > application >> >> :/. I've also included the time to load all of the parcels that > have a >> >> reasonable speed up, excluding the ones that don't speed up. It > still >> >> takes 7 seconds - that's on the "barely acceptable" edge of load >> >> times. >> >> >> I should point out that this is the base code, so on top of this > the >> >> application code still has to load. >> >> >> The ultimate goal of the SRE and parcels, etc, was that a single > small >> >> base image could load up all the parcels in a reasonable amount of >> >> time. We're not there yet obviously. >> >> >> With or without the patch loaded, the profile of loading all of > these >> >> parcels is pretty consistent: >> >> >> 8.8% NameSpaceBindings>>lookup: >> >> 5.2% Object>>oneWayBecome: >> >> 3.8% Behavior>>bindingFor: >> >> 3.6% Behavior>>flushVMmethodCache >> >> 3.5% SequenceableCollection>>do: >> >> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: >> >> 2.8% Class>>protectedBindingFor:modifiers: >> >> 2.5% NameSpaceSearchRules>>forNames:do: >> >> 2.1% Set>>initialIndexFor:boundedBy: >> >> ... cut at 2.0% >> >> >> Basically, to be able to 'live the dream' and load all the parcels > in >> >> at startup (with as few exceptions as possible), I'd need the >> >> parcel load code to be at least 2-3 times faster than my patched >> >> loader. >> >> >> If that could be achieved, I'd package with the slowest loading >> >> parcels included in the base. This would then mean by executable > would >> >> be much smaller than it is now and 'online upgrades' wouldn't be as >> >> costly to my users bandwidth. >> >> >> Some other interesting facts: If you take the base.im or visual.im >> >> clean images and remove all the parcels, you end up with a 3mb > image - >> >> this isn't too bad, as under compression this is around 1.5mb + the > VM >> >> is 2mb-ish. That really -would- be an ideal executable size for a >> >> pluggable base application. >> >> >> Cheers, >> >> Michael >> >> >> -- Charles A. Monteiro |
In reply to this post by Michael Lucas-Smith
well, I wanted a process that did not involve RTP or better said any
stripping just so that element was eliminated from consideration for any runtime issues that arise. . Also I would think that a better base would be an image that did not have Store loaded. > Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except > that I also use compacted compiled methods, you end up with a runtime.im > that is 7,500kb. does this keep all of VW kernel? If the debugger is present i.e. not PDP can one actually step through code and see at least decompiled code. I guess I don't understand what "compacting" compiled code means besides "compacting it" i.e. making it smaller. One of my requirements is the capability of making any runtime quickly "debuggable" Also I guess you are using the RuntimePackage deployment notifier? My process allows me to use the stock VW notifier i.e not PDP or a specific one I built more suitable for a customer runtime deployment. Finally, if I understand it correctly via your script the resulting executable size is about 4mb which includes compression i.e. the compression of the image prior to reshacking it. BTW, these are the parcels I have loaded into my SRE: #( 'Arbor GIF Reader Writer' 'NakedWindows' 'TransparentWindows' 'BOSS' 'BraceConstructor' 'NetClients' 'SMTP' 'POP3' 'FTP' 'HTTPS' 'SSL' 'X509' 'ASN1' 'AT MetaNumerics' 'ASN1-Support' 'DH' 'DSA' 'RSA' 'DES' 'ARC4' 'MD5' 'HTTP' 'Compression-ZLib' 'IMAP' 'Mail' 'MIME' 'NetConfigTool' 'NetClientBase' 'Blowfish' 'CiphersBase' 'SHA' 'HashesBase' 'SecurityBase' 'LoggingTool' 'Tools-Settings-VW' 'Tools-Settings' 'Aragon All' 'DDEML' 'DLLCC' 'PackageCategories' 'NetNamespace' 'URISupport' 'XML-source' 'XML') my Windows SRE is 5,820 KB which is compressed and includes reshacking into a single exe. -Charles On Tue, 14 Mar 2006 01:59:55 -0500, Michael Lucas-Smith <[hidden email]> wrote: > I just conducted the experiment again to make sure I wasn't talking out > my ass ;) > > The final running image is 3,385kb > > This includes all the platform's UI's, so it really is a universal > image. It can load up a parcel on startup - but the startup code is > really up to you to do how you want it.. fixed parcel name? command line > parameter? etc... > > I start from visual.im which is 11,078kb using VisualWorks 7.4 > > I then run the following script: > > | packages bundles | > Tools.Workbook allInstances do: [:each | each closeAndUnschedule]. > packages := Store.PackageModel allInstances select: [:ea | > #( 'OldBrowsers' 'Tools-Trippy' 'Tools-Workspace' 'Tools-Changes' > 'Tools-Parcel Manager' 'Tools-File Browser' ) includes: ea name]. > bundles := Store.BundleModel allInstances select: [:ea | > #( 'Tools-Debugger' 'Tools-Refactoring Browser' ) includes: ea name]. > [(bundles asSortedCollection: [:a :b | a name < b name]) do: [:each | > each unloadFromImage]. > (packages asSortedCollection: [:a :b | a name < b name]) do: [:each | > each unloadFromImage]] > on: Warning do: [:sig | sig resume: true] > > If you save the image at this point, it will be 8,422kb - the base.im > that comes in the preview\packaging directory is 8,604kb so already > we're winning ;) > > Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except > that I also use compacted compiled methods, you end up with a runtime.im > that is 7,500kb. > > I then run imageCompress against it and I end up with a compressed.im > that is the final size of 3,385kb > > Naturally, this could be taken further - the VW settings could be > removed, the launcher could be removed, etc.. but the producer is very > easy at this point and you can still actually -use- the shrunken image > if you want. > > So! Have at it all.. is this a good way to make a base? I personally > think so. If you whack the windows VM .exe on to it, you end up with a > base executable that is 4,006kb. > > Not bad really. > > Cheers, > Michael > >> Hi Michael > >> I'd be interested in this. One experiment I did once was start with the >> 7.3.1 beta base image add all the parcels we use and then add our >> parcel. The size of the result was only about 15% larger than our build >> via the RTP. So my thinking was to add a build menu item that will save >> a Pundle as a parcel and load it and any pre-reqs into a base image. >> This would be quite a nice alternative build mechanism. > >> Joerg > >> ----- >> Joerg Beekmann >> DeepCove Labs >> 4th floor 595 Howe Street >> Vancouver, BC, V6C 2T5 >> voice +1.604.689.0322 >> fax +1.604.689.0311 >> [hidden email] >> > >> CONFIDENTIALITY NOTICE >> Unless otherwise indicated this email contains information that is >> private >> and confidential. If you have received it in error, please notify the >> sender >> and delete this message along with any attachments. >>> -----Original Message----- >>> From: Michael Lucas-Smith [mailto:michael.lucas- >>> [hidden email]] >>> Sent: Monday, March 13, 2006 10:36 PM >>> To: Charles A. Monteiro >>> Cc: [hidden email] >>> Subject: Re[2]: Parcel load times >>> >>> Yes it loads parcels just fine an' dandy. Actually with compression, I >>> believe it'll be 1.5mb ish.. I can redo the experiment if you want and >>> create scripts to make such an image.. are you interested? >>> >>> Cheers, >>> Michael >>> >>> > Michael: >>> >>> > your wrote: >>> >>> >> Some other interesting facts: If you take the base.im or visual.im >>> >> clean images and remove all the parcels, you end up with a 3mb >> image - >>> >> this isn't too bad, as under compression this is around 1.5mb + the >> VM >>> >> is 2mb-ish. That really -would- be an ideal executable size for a >>> >> pluggable base application. >>> >>> > Do you actually have a base image i.e. a 3mb image which still can >> load >>> > parcels? >>> >>> > -Charles >>> >>> > On Mon, 6 Mar 2006 10:50:07 +1100, Michael Lucas-Smith >>> > <[hidden email]> wrote: >>> >>> >> Hi all, >>> >>> >> There's been plenty of hot discussions about parcel's and their >>> >> loading speed on this list before.. so I thought I'd throw in some >>> >> hard data to help out. >>> >>> >> I've got a spreadsheet that shows the load time of 'base parcels' - >>> >> parcels that either come with VisualWorks or that rarely change. >>> >> http://www.spiritshigh.com/load-times.xls >>> >>> >> These parcels are included in the base image for SWS's XML >>> >> WithStyle product. They add a hefty 5mb's of code to our base image >>> >> (which compresses down to around 2.5mb when we make the .exe). >>> >>> >> "Patched" means that while loading the parcels, the following >>> >> alteration is made to the parcel load logic: >>> >>> >> SystemUtils class>>modifySystem: aBlock >>> >> ^aBlock on: linkState do: [:ex | ex resume: false] >>> >>> >> This is undone at the end of the parcel loads and then 'SystemUtils >>> >> linkSystem' is executed to ensure everything is linked up >> correctly. >>> >>> >> "Unpatched" means the parcels were loaded as per Cincom intended >> them, >>> >> without any alterations to the system. >>> >>> >> On the second sheet there is a large graph showing the difference >> in >>> >> the load times, but the "Speedup" column on the data sheet shows >> just >>> >> how much of a difference the patch can sometimes make. >>> >>> >> Now, to really throw my spanner in to the works, I've shown the >> totals >>> >> down the bottom. Even with the patch, it takes 21 seconds to load >> all >>> >> these parcels. That's basically unacceptable for a desktop >> application >>> >> :/. I've also included the time to load all of the parcels that >> have a >>> >> reasonable speed up, excluding the ones that don't speed up. It >> still >>> >> takes 7 seconds - that's on the "barely acceptable" edge of load >>> >> times. >>> >>> >> I should point out that this is the base code, so on top of this >> the >>> >> application code still has to load. >>> >>> >> The ultimate goal of the SRE and parcels, etc, was that a single >> small >>> >> base image could load up all the parcels in a reasonable amount of >>> >> time. We're not there yet obviously. >>> >>> >> With or without the patch loaded, the profile of loading all of >> these >>> >> parcels is pretty consistent: >>> >>> >> 8.8% NameSpaceBindings>>lookup: >>> >> 5.2% Object>>oneWayBecome: >>> >> 3.8% Behavior>>bindingFor: >>> >> 3.6% Behavior>>flushVMmethodCache >>> >> 3.5% SequenceableCollection>>do: >>> >> 3.0% GeneralNameSpace>>protectedBindingFor:modifiers: >>> >> 2.8% Class>>protectedBindingFor:modifiers: >>> >> 2.5% NameSpaceSearchRules>>forNames:do: >>> >> 2.1% Set>>initialIndexFor:boundedBy: >>> >> ... cut at 2.0% >>> >>> >> Basically, to be able to 'live the dream' and load all the parcels >> in >>> >> at startup (with as few exceptions as possible), I'd need the >>> >> parcel load code to be at least 2-3 times faster than my patched >>> >> loader. >>> >>> >> If that could be achieved, I'd package with the slowest loading >>> >> parcels included in the base. This would then mean by executable >> would >>> >> be much smaller than it is now and 'online upgrades' wouldn't be as >>> >> costly to my users bandwidth. >>> >>> >> Some other interesting facts: If you take the base.im or visual.im >>> >> clean images and remove all the parcels, you end up with a 3mb >> image - >>> >> this isn't too bad, as under compression this is around 1.5mb + the >> VM >>> >> is 2mb-ish. That really -would- be an ideal executable size for a >>> >> pluggable base application. >>> >>> >> Cheers, >>> >> Michael >>> >>> >>> -- Charles A. Monteiro |
Charles,
You can save few 100 KBs of the image size if you unload the 'DLLCC', 'PackageCategories' and 'XML-source'. You don't usually need DLLCC and 'XML-source' to be presented in the runtime. --Mark > > BTW, these are the parcels I have loaded into my SRE: > > #( 'Arbor GIF Reader Writer' 'NakedWindows' 'TransparentWindows' > 'BOSS' 'BraceConstructor' 'NetClients' 'SMTP' 'POP3' 'FTP' 'HTTPS' > 'SSL' 'X509' 'ASN1' 'AT MetaNumerics' 'ASN1-Support' 'DH' 'DSA' 'RSA' > 'DES' 'ARC4' 'MD5' 'HTTP' 'Compression-ZLib' 'IMAP' 'Mail' 'MIME' > 'NetConfigTool' 'NetClientBase' 'Blowfish' 'CiphersBase' 'SHA' > 'HashesBase' 'SecurityBase' 'LoggingTool' 'Tools-Settings-VW' > 'Tools-Settings' 'Aragon All' 'DDEML' 'DLLCC' 'PackageCategories' > 'NetNamespace' 'URISupport' 'XML-source' 'XML') > > my Windows SRE is 5,820 KB which is compressed and includes reshacking > into a single exe. > > -Charles |
I faced some issues with trying to unload 'PackageCategories' if I recall
which impacted the use of the debugger where I to opt for the stock notifier. Same problem with 'XML-source'. I would like to get to the point where I can cleanly load back in debug support but there is some untanglement that needs to be done, mostly due again to the fact that the VW IDE had not been properly broken down into runtime components. Finally I do consider DLLCC a stock component of an SRE. At least in my practise I have always delivered images that in some way or another relied on DLLCC. For Windows clients I typically will re-use Windows goodies like functionality. Also a lot of db interaction will tend to be driven by external libraries. -Charles On Tue, 14 Mar 2006 10:28:37 -0500, Mark Pirogovsky <[hidden email]> wrote: > Charles, > > You can save few 100 KBs of the image size if you unload the 'DLLCC', > 'PackageCategories' and 'XML-source'. You don't usually need DLLCC and > 'XML-source' to be presented in the runtime. > > --Mark > > >> BTW, these are the parcels I have loaded into my SRE: >> #( 'Arbor GIF Reader Writer' 'NakedWindows' 'TransparentWindows' >> 'BOSS' 'BraceConstructor' 'NetClients' 'SMTP' 'POP3' 'FTP' 'HTTPS' >> 'SSL' 'X509' 'ASN1' 'AT MetaNumerics' 'ASN1-Support' 'DH' 'DSA' 'RSA' >> 'DES' 'ARC4' 'MD5' 'HTTP' 'Compression-ZLib' 'IMAP' 'Mail' 'MIME' >> 'NetConfigTool' 'NetClientBase' 'Blowfish' 'CiphersBase' 'SHA' >> 'HashesBase' 'SecurityBase' 'LoggingTool' 'Tools-Settings-VW' >> 'Tools-Settings' 'Aragon All' 'DDEML' 'DLLCC' 'PackageCategories' >> 'NetNamespace' 'URISupport' 'XML-source' 'XML') >> my Windows SRE is 5,820 KB which is compressed and includes >> reshacking into a single exe. >> -Charles -- Charles A. Monteiro |
In reply to this post by Carl Gundel
Carl,
>So I put a breakpoint in the close method on my >UserInterface subclass' windowClass (a subclass of ApplicationWindow). >Nothing there either. > >What am I missing? A technicality of how Windows deals with closes when done to the Close [X] button or Alt-F4. The UserInterface's close does not get called in that chain of events. Instead, the window's #closeQuietly gets called. Fortunately, it announces Closed so you can subscribe to that to do stuff. That said, that close should be abortable just like others, so, we'll look into that. And So It Goes Sames ______________________________________________________________________ Samuel S. Shuster [|] VisualWorks Engineering, GUI Project Smalltalk Enables Success -- What Are YOU Using? |
In reply to this post by Charles A. Monteiro-2
> well, I wanted a process that did not involve RTP or better said any > stripping just so that element was eliminated from consideration for any > runtime issues that arise. . Also I would think that a better base would > be an image that did not have Store loaded. The visual.im doesn't have Store loaded. The way I use the RTP it doesn't do much stripping at all, so it's very safe. >> Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except >> that I also use compacted compiled methods, you end up with a runtime.im >> that is 7,500kb. > does this keep all of VW kernel? If the debugger is present i.e. not PDP > can one actually step through code and see at least decompiled code. I > guess I don't understand what "compacting" compiled code means besides > "compacting it" i.e. making it smaller. the compacting, as Alan pointed out in another post, doesn't do much but remove some instance variables from compiled methods. I'll probably stop using it now. The old debugger is present, but even that can be removed, it doesn't give you much of a space saving to remove it though. > One of my requirements is the capability of making any runtime quickly > "debuggable" > Also I guess you are using the RuntimePackage deployment notifier? Yep. > My process allows me to use the stock VW notifier i.e not PDP or a > specific one I built more suitable for a customer runtime deployment. > Finally, if I understand it correctly via your script the resulting > executable size is about 4mb which includes compression i.e. the > compression of the image prior to reshacking it. That's right. > BTW, these are the parcels I have loaded into my SRE: > #( 'Arbor GIF Reader Writer' 'NakedWindows' 'TransparentWindows' 'BOSS' > 'BraceConstructor' 'NetClients' 'SMTP' 'POP3' 'FTP' 'HTTPS' 'SSL' 'X509' > 'ASN1' 'AT MetaNumerics' 'ASN1-Support' 'DH' 'DSA' 'RSA' 'DES' 'ARC4' > 'MD5' 'HTTP' 'Compression-ZLib' 'IMAP' 'Mail' 'MIME' 'NetConfigTool' > 'NetClientBase' 'Blowfish' 'CiphersBase' 'SHA' 'HashesBase' 'SecurityBase' > 'LoggingTool' 'Tools-Settings-VW' 'Tools-Settings' 'Aragon All' 'DDEML' > 'DLLCC' 'PackageCategories' 'NetNamespace' 'URISupport' 'XML-source' 'XML') > my Windows SRE is 5,820 KB which is compressed and includes reshacking > into a single exe. Interestingly enough, my XMLWS .exe is about that size too.. I have roughly the same sorts of things loaded in to it, plus Pollock and some other stuff. Cheers, Michael |
> The visual.im doesn't have Store loaded.
Right. Jumped the gun when I saw references to the Store namespace and other Store entities which I am most accustomed to seeing in Store base. Your script would,it seems , rely on PackageCategories which is part of the stock visual.im your script: | packages bundles | Tools.Workbook allInstances do: [:each | each closeAndUnschedule]. packages := Store.PackageModel allInstances select: [:ea | #( 'OldBrowsers' 'Tools- Trippy' 'Tools-Workspace' 'Tools-Changes' 'Tools-Parcel Manager' 'Tools-File Browser' ) includes: ea name]. bundles := Store.BundleModel allInstances select: [:ea | #( 'Tools-Debugger' 'Tools- Refactoring Browser' ) includes: ea name]. [(bundles asSortedCollection: [:a :b | a name < b name]) do: [:each | each unloadFromImage]. (packages asSortedCollection: [:a :b | a name < b name]) do: [:each | each unloadFromImage]] on: Warning do: [:sig | sig resume: true] end of script ------------------- > The way I use the RTP it doesn't do much stripping at all, so it's very > safe. I simply want RTP out of the equation although I will admit to currently leveraging their "dumper framework" since I like the diagnostics it puts out. These diagnostics are re-routed to our own in-house logging subsystem. -Charles On Tue, 14 Mar 2006 15:59:11 -0500, Michael Lucas-Smith <[hidden email]> wrote: > > >> well, I wanted a process that did not involve RTP or better said any >> stripping just so that element was eliminated from consideration for any >> runtime issues that arise. . Also I would think that a better base would >> be an image that did not have Store loaded. > > The visual.im doesn't have Store loaded. The way I use the RTP it > doesn't do much stripping at all, so it's very safe. > >>> Then if you use the RuntimePackager with -ALL DEFAULT SETTINGS- except >>> that I also use compacted compiled methods, you end up with a >>> runtime.im >>> that is 7,500kb. > >> does this keep all of VW kernel? If the debugger is present i.e. not PDP >> can one actually step through code and see at least decompiled code. I >> guess I don't understand what "compacting" compiled code means besides >> "compacting it" i.e. making it smaller. > > the compacting, as Alan pointed out in another post, doesn't do much but > remove some instance variables from compiled methods. I'll probably stop > using it now. > > The old debugger is present, but even that can be removed, it doesn't > give you much of a space saving to remove it though. > >> One of my requirements is the capability of making any runtime quickly >> "debuggable" > >> Also I guess you are using the RuntimePackage deployment notifier? > > Yep. > >> My process allows me to use the stock VW notifier i.e not PDP or a >> specific one I built more suitable for a customer runtime deployment. > >> Finally, if I understand it correctly via your script the resulting >> executable size is about 4mb which includes compression i.e. the >> compression of the image prior to reshacking it. > > That's right. > >> BTW, these are the parcels I have loaded into my SRE: > >> #( 'Arbor GIF Reader Writer' 'NakedWindows' 'TransparentWindows' >> 'BOSS' >> 'BraceConstructor' 'NetClients' 'SMTP' 'POP3' 'FTP' 'HTTPS' 'SSL' 'X509' >> 'ASN1' 'AT MetaNumerics' 'ASN1-Support' 'DH' 'DSA' 'RSA' 'DES' 'ARC4' >> 'MD5' 'HTTP' 'Compression-ZLib' 'IMAP' 'Mail' 'MIME' 'NetConfigTool' >> 'NetClientBase' 'Blowfish' 'CiphersBase' 'SHA' 'HashesBase' >> 'SecurityBase' >> 'LoggingTool' 'Tools-Settings-VW' 'Tools-Settings' 'Aragon All' 'DDEML' >> 'DLLCC' 'PackageCategories' 'NetNamespace' 'URISupport' 'XML-source' >> 'XML') > >> my Windows SRE is 5,820 KB which is compressed and includes reshacking >> into a single exe. > > Interestingly enough, my XMLWS .exe is about that size too.. I have > roughly the same sorts of things loaded in to it, plus Pollock and some > other stuff. > > Cheers, > Michael -- Charles A. Monteiro |
In reply to this post by Michael Lucas-Smith
Michael,
What was "1.5mb
ish"? Your later post came up with the number 3,385kb. I like the first number
better. ;-)
-Carl
|
In reply to this post by Michael Lucas-Smith
My
guess: Michael remember the 3MB size, and thought it had been the
uncompressed size.
My daydream: Michael ran the image through imagecompress.exe once, giving 3MB, and a second time, giving 1.5MB :-) Steve
|
That would have been my guess too but I prefer to
be wrong in this case, so I asked just in case. ;-)
-Carl
|
Free forum by Nabble | Edit this page |