From ac59ff802b40f7bfd6b9a774a7cc2438fad99e2b Mon Sep 17 00:00:00 2001 From: silinoron Date: Thu, 19 Aug 2010 16:13:10 -0700 Subject: Switch to using SIMD-oriented Fast Mersenne Twister for random number generation. In testing, reduced random number generation time by a factor of 8-10. Drops support for processors older than Pentium 4. Drop Mersenne Twister library; use a C++ SFMT library. --HG-- branch : trunk --- src/server/shared/CMakeLists.txt | 1 - src/server/shared/Utilities/Util.cpp | 17 ++++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/server/shared') diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt index 7af5f3ebd83..c2a35117686 100644 --- a/src/server/shared/CMakeLists.txt +++ b/src/server/shared/CMakeLists.txt @@ -52,7 +52,6 @@ set(shared_STAT_SRCS include_directories( ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/dep/mersennetwister ${CMAKE_SOURCE_DIR}/dep/SFMT ${CMAKE_SOURCE_DIR}/dep/sockets/include ${CMAKE_SOURCE_DIR}/dep/utf8cpp diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index 97dfde6c92b..56922651331 100644 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -22,36 +22,35 @@ #include "socket_include.h" #include "utf8.h" -//#include "SFMT.h" -#include "MersenneTwister.h" +#include "sfmt.h" #include -typedef ACE_TSS MTRandTSS; -static MTRandTSS mtRand; +typedef ACE_TSS SFMTRandTSS; +static SFMTRandTSS sfmtRand; int32 irand (int32 min, int32 max) { - return int32 (mtRand->randInt (max - min)) + min; + return int32(sfmtRand->IRandom(min, max)); } uint32 urand (uint32 min, uint32 max) { - return mtRand->randInt (max - min) + min; + return sfmtRand->URandom(min, max); } int32 rand32 () { - return mtRand->randInt (); + return int32(sfmtRand->BRandom()); } double rand_norm(void) { - return mtRand->randExc (); + return sfmtRand->Random(); } double rand_chance (void) { - return mtRand->randExc (100.0); + return sfmtRand->Random() * 100.0; } Tokens StrSplit(const std::string &src, const std::string &sep) -- cgit v1.2.3