← Back to team overview

linuxdcpp-team team mailing list archive

[Bug 600806] Re: (Open)Solaris doesn't use x64 TTH code

 

Well. This has been a productive hour. OSol doesn't naturally invoke gcc with -m64. So of course __x86_64__ wasn't defined. So I went into SConstruct and replaced:
	if os.sys.platform == 'sunos5':
                env['ICONV_CONST'] = 'const'
                env.Append(LINKFLAGS = ['-lsocket', '-lnsl'])
With:
        if os.sys.platform == 'sunos5':
                env['ICONV_CONST'] = 'const'
                env.Append(LINKFLAGS = ['-lsocket', '-lnsl', '-m64'])
                env.Append(CXXFLAGS = '-m64')

I can't speak to whether this is a good idea on SPARC hardware. The
reasoning behind -m64 being off on OSol is apparently because on SPARC,
32 bit code is often faster. I'm on x86-64, so meh.

Hash speed .... is now 300MB/s. Or at least that is what it will push as
long as the incoming data is coming in fast enough. This is what "fast
hashing" off as related to
https://bugs.launchpad.net/linuxdcpp/+bug/600815.

-- 
(Open)Solaris doesn't use x64 TTH code
https://bugs.launchpad.net/bugs/600806
You received this bug notification because you are a member of LinuxDC++
Team, which is subscribed to LinuxDC++.

Status in Linux DC++: Confirmed

Bug description:
Using rev 374, OpenSolaris b134.

TigerHash.cpp, chunk of code from line 26:

#ifdef _WIN32
#if defined(_M_X64)
#define TIGER_ARCH64
#endif
#if !(defined(_M_IX86) || defined(_M_X64))
#define TIGER_BIG_ENDIAN
#endif
#else // _WIN32
#if defined(__x86_64__) || defined(__alpha)
#define TIGER_ARCH64
#endif
#if !(defined(__i386__) || defined(__x86_64__) || defined(__alpha))
#define TIGER_BIG_ENDIAN
#endif
#endif // _WIN32

Apparently none of that matches my OSol box, and we end up using the slower 32-bit code.

If I add another line just forcing "#define TIGER_ARCH64", I get much better hashing speed. Using the normal code, I get around 58MB/s, with that define added, more like 81MB/s. Still not great, but its something.





References