OmniWeb 2 speed.

William Shipley wjs
Wed Dec 20 14:57:34 PST 1995


We've worked pretty hard since the first beta to make OmniWeb a faster,  
and we'll continue to do it right up until we ship.

People using NeXTstations have told us the latest internal version is  
quite a bit speedier than it was.

On the other hand, please understand that in 2.0 we've taken what was a  
C library and rewritten it from scratch using objects and foundation kit.  
 While this actually gives some performance boosts (less copying of  
buffers), on the whole it's a performance lose.

At the same time, we've made our entire architecture extensible; you can  
add new tags to the HTML parser and also add entirely new bundles of  
processors and preferences and addresses and authorization types.

We've also added true multi-threading, which means each processor  
doesn't have to be written as a state machine; instead each processor  
just reads from a datasource and writes to a sink and doesn't realise  
that sometimes when it does a read its thread gets blocked waiting for  
the processor before it to create more data.

Multi-threading means writing processors is ten times easier, but also  
means we need to use locks around everything, which slows us down more.   
Just putting Objective-C into thread-safe mode gives up 15% of its speed,  
according to one NeXT engineer.

So, while I want OmniWeb 2.0 to be nice and zippy, when judging it  
remember that in the 10 months since we release OmniWeb 1.0 we've added  
tables and frames and font colors and background images and incremental  
loading of images and threads and extensibility and tons of other stuff,  
and every feature we add is by necessity going to have some speed  
penalty. Flexible architectures aren't as fast as inflexible  
architectures; that's why some programs are written in assembly and some  
in Objective-C.

Someone sent me mail saying, "I like the new features but I'd prefer to  
have speed.  Do I have to go back to Lynx?"  Well, no.  Stay with 1.0 if  
you want a super-fast, non-featureful browser.

This all said, we ARE optimizing OmniWeb 2.0, and it is getting  
incrementally faster.  We also appreciate specific complaints about  
slowness, but not general ones.  For example, it's no surprise to me that  
it's slower on a 25Mhz slab than on my Pentium 133.  But if you say,  
"Going to http://xxx.yyy.com seems particularly slow" then we can check  
it out and find out if we're doing anything inefficient.  Or if you say,  
"Switching between pages that are already rendered is bothersomely slow"  
then we can address that (and, in fact, already have).  Or if you say,  
"On monochrome hardware incremental image loading slows the app down too  
much" we can address that.

-Wil


More information about the OmniWeb-l mailing list