vi must die
« November 2003 | Main | January 2004 »
I had this idea for a NSAutoreleasePool implementation, that I figured would be faster than what Foundation offers. Actually it isn't even sporting. You write down some straightforward code, measure and win. :) It's that easy. Foundation needs a little less than 2 minutes for adding securely retained objects and releasing them (the object is never ever deallocated). And the MulleAutoreleasePool code does it in 9 seconds...
2003-12-15 16:00:51.160 MulleAutoreleasePool[26323] Preparing 10000 objects... 2003-12-15 16:01:00.881 MulleAutoreleasePool[26323] Adding 100000000 objects to NSAutoreleasePool 2003-12-15 16:01:11.756 MulleAutoreleasePool[26323] Killing NSAutoreleasePool 2003-12-15 16:02:54.987 MulleAutoreleasePool[26323] Adding 100000000 objects to MulleAutoreleasePool 2003-12-15 16:02:58.324 MulleAutoreleasePool[26323] Killing MulleAutoreleasePool 2003-12-15 16:03:03.380 MulleAutoreleasePool[26323] DoneWell, well well. Things look a bit differently though, if we reduce the number of objects to a tenth. Now the MulleAutoreleasePool does it in a second, whereas Foundation "only" used 2 1/2 s.
2003-12-15 16:07:18.969 MulleAutoreleasePool[26332] Preparing 10000 objects... 2003-12-15 16:07:19.971 MulleAutoreleasePool[26332] Adding 10000000 objects to NSAutoreleasePool 2003-12-15 16:07:20.894 MulleAutoreleasePool[26332] Killing NSAutoreleasePool 2003-12-15 16:07:22.357 MulleAutoreleasePool[26332] Adding 10000000 objects to MulleAutoreleasePool 2003-12-15 16:07:22.682 MulleAutoreleasePool[26332] Killing MulleAutoreleasePool 2003-12-15 16:07:23.180 MulleAutoreleasePool[26332] DoneFor whatever reason at a certain amount of objects NSAutoreleasePool really slows down a lot.
There is no point at which NSAutoreleasePool overtakes MulleAutoreleasePool. Unfortunately for me, I thought I could cleverly optimize the "releasing of the pool objects" code , but instead its my "adding an object to the pool" code that is much better.
So expect an article in the Optimizing Objective-C series sometime in the near or distant future. Though feature complete I'd like to stick the MulleAutoreleasePool in a few threaded apps and see if it behaves well. (It should).
The 25 millionth song -- which was purchased on Friday afternoon was Satan My Master by Bathory.
Apple also released that over $1 million in iTunes online gift certificates and allowances have been purchased since their addition on October 16th, 2003.
Well first of all it's way of adding objects to the pool is actually identical to the way I did.
They also seem to optimize the creation of autorelease pools, by not actually freeing old instances of a thread but keeping them around. Now I don't know... At first I thought that would be superflous, as I rarely ever allocate NSAutoreleasePools. But if you have loops where you create and destroy them often to conserve memory it could be conceivably worth it. I'd bet that this has no measureable effect whatsoever, except in synthetic benchmarks. Which .. makes it worth it :)
Deallocation of pooled objects is implemented naively in GNUstep :).
So I'd expect that the MulleAutoreleasePool would handily beat the GNUstep NSAutoreleasePool when the pool contains many objects.
|
|
A very nice replacement so far has been Tumult HyperEdit which also has a nice looking icon. (I have no idea though, what it's supposed to mean) If you want to edit HTML pages together with a CSS file with an immediate preview, this is the program you should give a try. |

Good to have some free time just playing around with nutty concepts. Don't panic, a juicy article will come out either way, I believe. :)
Then there is the academic piece, that is also pretty much completely written. Might turn up as part 8 or 9. This features another 15% speed increase on method invocation, at least on G3 processors.
Yeah, it's off Slashdot. I do anything to get this webpage filled :)
I bought the router from Atelco. It was the last box left. Never buy the last box left...
![]() |
Well I did. Sure enough it was a returned router. Some idiot "Rainer" had already set up the box and entered a password. After probably failing to get it to connect with T-Online he returned it and now I have it. That preempted my "easy Web Setup" and I put the handy Quick Setup Wizard to the task - only available on Windows...
But! The Quick Setup Wizard also required the password!
After perusing the documentation I noticed that "Rainer" had |
The Windows setup then had me sweating for a minute, because you can't use it to setup a T-Online DSL account. The dialog box to hold the username is simply too small for T-Onlines massive 42 character user. That's I guess why "Rainer" returned the router. Luckily the Web Interface is much better than the Windows client in all cases except the setting the server name, where the HTTP interface always insists on truncating the last character <grunt>
Connecting to T-Online via PPPOE then went flawlessly.
Actually I am impressed, with what you can get for € 39. It has DHCP (even static!), NAT, a simple Firewall, port forwarding and even dynamic DNS support. I have turned my Linux server off, ah blessed silence. The only sound I hear now is that damned Radeon 9800 card, which I will silence soon with a Verax fan.
This is sweet. I opened up port 22 and port 9 in the router to pass through to my G5. I let the router "Always connected" to T-Online, keeping my dynamic IP current on DynDNS. Now with the help of Broadband Reports I can send a wakeup packet to my G5 and then ssh into it. If the setup is idle, it shouldn't waste more than 15 W.
Next I will buy two cheap 11 mbs bridges for €100 total to get rid of the cable going from the router to my machine room. I hope it will be as easy to setup.
Can't recommend the TW100-S4W1CA yet, as I have little working experience. The only thing missing offhand is the ability to create a local DNS server with a little /etc/hosts table.
Get it you hungry performance hounds. :)
Not too shabby, with real world use.
|
Pro:
Contra:
|
If you want a DWL-700AP as a Wireless Client with WEB encryption, you need to set Authentication in http://192.168.0.50/h_wireless.html to Shared Key. Open System might also work, but Auto reliably fails.
Don't go crazy with the local IP settings just give both a unique IP on your local net.
Otherwise you don't need any magic.
For the price I think its a good deal.
This page contains all entries posted to Nat!'s Web Journal in December 2003. They are listed from oldest to newest.
November 2003 is the previous archive.
January 2004 is the next archive.
Many more can be found on the main index page or by looking through the archives.