I don't think it's filesystem related, i.e. there is not much I/O happening at the time. Maybe NetBSD's /bin/sh is a lot faster than Solaris /bin/{sh,ksh,bash}, maybe NetBSD's fork() is a lot faster. I didn't benchmark the two operating systems. I'm hoping to conduct some benchmarks soon and will post the results.
This brings me to another question: newer x86 CPUs have a time stamp counter, wich can be accessed with rdtsc assembly instruction. I think ultrasparc CPUs have a similar counter, accessed via %tick register. This is useful in benchmarks when measuring high resolution timing evens. On x86 with GCC I use the following function to take a time stamp: uint64_t rdtsc(void) { /* ** rdtsc sets register %edx to the high-order 32 bits of the counter ** and register %eax to the low-order 32 bits. Those values are stored ** in an array of two 32 bit integers, and returned as a single 64 bit ** value. */ union { uint64_t u64ts; uint32_t u32arr[2]; } un_rdtsc; __asm__ __volatile__ ("rdtsc; movl %%edx,%0; movl %%eax,%1" : "=r" (un_rdtsc.u32arr[1]), "=r" (un_rdtsc.u32arr[0]) : /* No input */ : "%edx", "%eax"); return(un_rdtsc.u64ts); } The above function will work with GCC, but I think it will not compile with SunPro compiler. Does anyone have any suggestions on how I could convert such a function into portable x86 and sparc assembly code (using rdtsc for x86 and %tick for sparc)? This message posted from opensolaris.org _______________________________________________ perf-discuss mailing list perf-discuss@opensolaris.org