Pulled out the MacIvory machine. MacIvory 2 gives slightly better but roughly equal performance to the microExplorer, despite having to access its memory over the Nubus. 34 seconds for 50000 iterations.

Swapped in the MacIvory 1 board. Not surprisingly, it has slightly better than half of the performance of the MacIvory 2, since the MacIvory 1 is in every way identical to the 2 except for having slightly better than twice the cycle time. 62 seconds for 50000 iterations.

The Microexplorer uses the same chip as the TI Explorer II, the first VLSI lisp processor released commercially. The Symbolics Ivory came out a year or so later. The MacIvory I and II access main memory over the NuBus, which was a performance bottleneck the standalone machines did not have. The TI Explorers were also based on NuBus, but had a faster local bus for main memory access.

Running this "dhumbstone" in interpreted code is amusing, and it reminds me of a story I read here.

"n general terms, the job description was to take a customer question; translate it into inoffensive language and present it to the developers. We then took the answer and tranlated that into inoffensive language and presented it to the customer. "

...and another jrd story:I did the macivory serial stuff, so when a guy at Lincoln Labs started having problems using a macivory to do data acquisition over a serial line to some random piece of hardware, I got dragged into the loop in short order. I talked to the guy, and debugged over the phone a little, and came to the conclusion that (a) he didn't have much of a clue, and (b) there was a stupid bug in some low-level queue-handling code. I knocked together a patch and sent it off. The next day he calls back, and he's not losing data any more, but "every once in a while" the whole machine hangs up, wedged solidly in Run state, not responsive to keyboard or anything else. It would do that for some number of seconds, and then start running again. I did a lot of head-scratching over that, but couldn't come up with an explanation. Finally I went and found Greenwald, who'd written the (then) new scheduler, to ask him if I was doing something wrong. He looked at the code, and said it looked ok. Eventually the management said if we couldn't fix it over the phone, we should just go out there, so we drove over. Met the guy (more military security checks) and got into the lab. Sure enough, the machine wedges up whenever it turns around. Mike digs around in the scheduler datastructures for a while, but can't find any explanation. After some FEP debugging, Mike says "I dunno, but it looks to me like it's just spending a lot of time in the interpreter". We look at each other. I ask the costomer "You loaded the patch I sent you, right?" "Yes." "Did you compile it first?" He looks blankly at me. Mike and I look at each other again. I tell the guy "You have to compile it before you load it." "Really?? I never do that with my code." After discarding several other responses, I said "Just compile it and reload it and let's try it again". He goes off to compile it and save it into a world, we go get coffee and boggle and the level of lossage. Now he's got his new world set up, so we go try again. No joy, it still wedges up. Thinking maybe we hadn't really fixed it, Mike digs around some more. After a while, "It still looks to me like it's spending a lot of time in the interpreter." I ask the customer "You compiled that, right?" "Yes" "and loaded it into this world, right?" "Yes". Grumble. Well maybe it didn't get saved where we thought it did. He saves a new world. Try again. Still wedges. By now we're both stumped. Let's try it one last time. "You're sure you compiled it" "Sure I'm sure!" "And loaded the binary file into this world, right?" Blank look. "Binary file?" The thing that really amazed me about the whole incident was what it said about genera robustness. We were running a fair-sized slab of code interpreted, at interrupt level, and it didn't croak anything.--- jrd

indeed funny hehe

hamei wrote:"n general terms, the job description was to take a customer question; translate it into inoffensive language and present it to the developers. We then took the answer and tranlated that into inoffensive language and presented it to the customer. "

I have compiled results to share, and there's no word for them but "hilarious". I ended up having to use n=50000000 (as in the original examples) for the compiled results, because n=50000 was too fast for the resolution of the timer.

thanks for all this results! wow! the TI uExplorer is really behind hehebut wow! the OpenGenera 2 on your Linux VM under Mac Pro

hmmm how about the Genera under Alpha? i think that was the latest setup from Symbolics right? do you have such setup? i still cannot make mine work on Ubuntu 64bit via virtualbox.. i already tried almost all the available instructions on the net but still wont work.. i think its about my network setup..