Bruce Lilly wrote:
I ran a test by building both 32-bit and 64-bit versions of Ted Faber's
[...]
Simple test input to demonstrate 32-bit time_t issue:

# cat test.grap
.G1
frame invis
label bot strftime("%Y-%m-%dT%H:%M:%S", strptime("%Y-%m-%dT%H:%M:%S",
"2038-01-20T23:59:59"))
.G2

64-bit results unremarkable:
# grap test.grap | grep aligned
line invis "2038-01-20T23:59:59" aligned from Frame.Bottom.end + (0, -0.4)
to Frame.Bottom.start + (0, -0.4)

32-bit results show the critical time_t overflow issue:
# grap test.grap | grep aligned
line invis "1969-12-31T18:59:59" aligned from Frame.Bottom.end + (0, -0.4)
to Frame.Bottom.start + (0, -0.4)

That's broken, and is sufficient reason to build as 64-bits on 64-bit
hardware.


We currently support 32 bit and 64 bit kernel. A bug fix needs to work on both 32 and 64 bit versions, so that would not be acceptable as a bug fix for this issue (if it was something you were trying to fix in the distro).

Applications which need to handle dates outside of the operating system time (such as dates of births, deaths, marriages, retirements, etc) shouldn't be using time_t -- that's very well established.

I ran 3 passes with 32- and 64-bit versions using the distributed example /
regression input ( examples/example.ms in the source distribution) and
timed the runs; there was a fairly consistent speed benefit (real and user)
to the 64-bit build.
Some details of the version of grap built, the build platform, test
command, and results follow.


Generally, 32 bit apps which are simply rebuilt as 64 bit (without being modified to explicitly make use of larger address space) run faster on x86 because of the extra registers available for compiler optimisation, and run slower on sparc because of the larger working set size.

However, there is very little in /usr/bin which is performance critical on any system, because these are not normally a significant part of any application, so optimizing for the performance of /usr/bin/* gets you almost no gains, and a lot of pain. The general philosophy has been to provide separate 64 bit versions only when essential for operation on 64 bit kernel or there's a performance or data capacity gain which is important for some specific application. In all other cases, 32 bit versions are used on both 32 bit and 64 bit kernels so we don't need to do two builds, two lots of testing, install two binaries, etc.

--
Andrew Gabriel

_______________________________________________
openindiana-discuss mailing list
openindiana-discuss@openindiana.org
http://openindiana.org/mailman/listinfo/openindiana-discuss

Reply via email to