Eliminating multiple srand() calls gives 99.7% performance savings.
(for this function).
At least in my glibc, every srand() call does 310 rand() calls to
fill an internal 48-bytes array - for lrand48 and similar.
Index: trunk/src/sys_unix.c
===================================================================
--- trunk/src/sys_unix.c (Revision 15)
+++ trunk/src/sys_unix.c (Revision 16)
@@ -293,16 +293,16 @@
int SYS_Random(int iSeed, float fStart, float fEnd)
{
-
+ static int iInitialized=0;
int iRandNum = 0;
- if (iSeed != 0)
+ if (iInitialized == 0)
{
- srand(iSeed);
+ srand(SYS_GetSeed());
+ iInitialized=1;
}
iRandNum = 1 + (int) (fEnd * rand() / (RAND_MAX + fStart));
- srand(iRandNum);
return iRandNum;
}
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle