POV-Ray : Newsgroups : povray.programming : POV 4 Design Musings : Re: Wish List Server Time
29 Jul 2024 04:26:30 EDT (-0400)
  Re: Wish List  
From: Ron Parker
Date: 22 Apr 1999 11:58:31
Message: <371f3917.0@news.povray.org>
On Thu, 22 Apr 1999 00:44:01 +0200, Kenneth Johansson <ken### [at] canitse> wrote:
>You know that a shared lib is slower than statically linked code. well now you
>do :)

You must be kidding.  If it is slower (and it doesn't have to be) it is only
by a few cycles per function call.  

On a 386, a direct intrasegment call takes 7+m cycles, where m is a 
characteristic of the first instruction at the called address and is a constant 
for our purposes.  An indirect intrasegment (all 32-bit flat-model calls are 
intrasegment) call takes either 7+m or 10+m cycles.  Let's be pessimists and 
say that it will take the three extra cycles in every case (as it likely will 
if the address of the target address is specified directly rather than as a 
register.)  On a 33 MHz machine, then, it will take an extra tenth of a 
microsecond to make the indirect call.  If we have to call that function for 
every pixel of an 800x600 image, it will take a whole 48 milliseconds longer to 
use the shared library.  Most of us have faster processors than a 386/33, 
though, so we won't have to wait that long.  If you do have a 386/33, and you 
don't have the 48 milliseconds to spare, just write self-modifying code that 
'fixes up' the dynamic library call to a direct call at bind time.

>Also it can be quite hard to support this in a generic way.  But I could be
>done I think if the build system is converted to gnu autoconf/libtool. Libtool
>take care of all the hairy things involving dll's

Keep in mind that autoconf and libtool are both very Unix-centric.  Autoconf 
generates shell scripts.  Hands up all you Mac and Windows users who have a 
fully-compatible copy of bash.  Thought so.  Libtool supports the following 
build environments.   Note that Windows, MS-DOS, and MacOS are all missing.

------ quoted from http://www.fsf.org/software/libtool/libtool.html
Libtool supports building static libraries on all platforms. 

Shared library support has been implemented for these platforms: 

AIX 3.x (*-*-aix3*) 
AIX 4.x (*-*-aix4*) 
AmigaOS (*-*-amigaos*) 
BSD/OS 4.x (*-*-bsdi4*) 
Digital/UNIX 3.x, 4.x, a.k.a. OSF/1 (*-*-osf3*, *-*-osf4*) 
DG/UX R4.11, R4.12, R4.20 (*-*-dguxR411*, *-*-dguxR412*, *-*-dguxR420*) 
FreeBSD 2.x, 3.x (*-*-freebsd2*, *-*-freebsd3*) 
GNU/Linux ELF (*-*-linux-gnu*, except aout, coff, and oldld) 
HP-UX 9.x, 10.x, 11.x (*-*-hpux9*, *-*-hpux10*, *-*-hpux11*) [see note] 
IRIX 5.x, 6.x (*-*-irix5*, *-*-irix6*) 
NetBSD 1.x (*-*-netbsd*) 
OpenBSD 2.x (*-*-openbsd*) 
OS/2 using EMX (*-*-os2*) 
SCO OpenServer 5.x (*-*-sco3.2v5*) 
SCO UnixWare 7.x (*-*-sysv5*) 
Solaris 2.x (*-*-solaris2*) 
SunOS 4.x, a.k.a. Solaris 1.x (*-*-sunos4*) 
UnixWare 2.x (*-*-sysv4.2uw2*) 
UTS 4.x (*-*-uts4*) 
All ELF targets that use both the GNU C compiler (gcc) and GNU ld


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.