size_t for length on x64 will make app slower than on x86?

Freddy via Digitalmars-d digitalmars-d at puremagic.com
Mon Nov 17 11:56:22 PST 2014


On Monday, 17 November 2014 at 15:28:52 UTC, FrankLike wrote:
> I test it:
>
> module aasize_t;
> import std.stdio;
> import std.datetime;
> import std.conv;
> import std.string;
>
> size_t[string] aa;
>
> void gettime()
> {
> 	for(size_t i=0;i<3000000;i++)
> 	{
> 		aa[to!string(i)] = i;
> 	}
> }
> void main()
> {  	writeln("size_t.max",size_t.max);
>     gettime();
>     void getlen(){auto alne = aa.length;}
> 	auto r = benchmark!(getlen)(10000);
> 	auto f0Result = to!Duration(r[0]); // time f0 took to run 
> 10,000 times
> 	writeln("\n size_t time is :",f0Result);
> 	StopWatch sw;
> 	sw.start();
> 	gettime();
> 	sw.stop();
> 	writeln("\n size_t time is sw:",sw.peek.msecs," msecs");
> }
> ----------and anoter is uint[string] aa
>
> dmd -m64 aauint.d
> dmd -m64 aasize_t.d
> dmd aaint.d -ofaauint32.exe
> dmd aasize_t.d -ofaasize_t32.exe
>
> @del *.obj
>
> aaint
> aasize_t
>
> aaint32
> aasize_t32
> @pause
>
> Last Result:
>
> They take the almost same time,and usage memory. but uint(or 
> int) is more practical for length to use.
Don't profile with out optimzation.
Add "-O -inline -release -boundscheck=off" to your dmd arguments.


More information about the Digitalmars-d mailing list