From mboxrd@z Thu Jan 1 00:00:00 1970 Message-Id: <200006101822.OAA27083@cse.psu.edu> To: 9fans@cse.psu.edu Subject: Re: [9fans] third edition, installation experiences From: "rob pike" Date: Sat, 10 Jun 2000 14:22:10 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: b4fc5b54-eac8-11e9-9e20-41e7f4b1d025 /dev/draw seems slower than /dev/bitblt. I wonder if the difference is from not doing runtime code generation. Perhaps. Draw() is also a much more general operator, which causes it to be slower in the worst case. On the other hand, we (well, Russ) worked on getting draw() to talk to the graphics accelerator on some of the cards, and there are simple examples like catting /dev/words where the new system is *much* faster (factors of 10 or more) than even bitblt was. I hope folks will connect the code to the hardware on more graphics cards so the speedups will be more widely available. On the issue of run-time code generation, we abandoned it because it was too hard to write portable code to handle the synchronization of instruction and data caches. The problem is not processors so much as systems; the details of cache management in different architectures are often delegated to motherboard makers who choose widely varying ways to handle cache flushing and make it very hard for a portable program to divine what to do. If you're just on PCs, it's not so hard, but we use a lot of non-PC machines. Also, it's possible that the rise of JITs will help this situation, but if the VGA industry is anything to go by... Plumbing is... interesting. I normally like to have several editors running, keeping different work in different contexts. The new system makes that difficult, because when one editor opens a file, the others want to open it too. There was a long discussion about how and whether to handle fan-out in the plumber. What we did reflects our style of use. If it doesn't suit your needs, you have the source... Also of course it's mostly controlled by configuration files, so you might be able to try another arrangement just by using different plumbing rules. (The fan-out isn't explicit in the configuration, but I suppose on reflection it could be made to be.) I've also done tricks where I've rebound things to rearrange plumbing ports for temporary purposes; that might work well for you. Failing that, B is a shell script that could easily be adapted to use other information to direct the file to a port other than edit, or to add attributes that different editors could check. -rob