On Sun, 02 Sep 2012, Amir wrote:
> Hi,
> In one of my project, I have to call IntToStr more than 10M times.
> I noticed that IntToStr calls Str function. I implemented my own version
> of IntToStr which is almost twice faster than the current implementation
> of IntToStr.
> I wonder if it is possible to use my code in IntToStr function.
There are 4 generic routines in "./FPC_SRC/rtl/inc/generic.inc":
procedure int_str(l:longint;out s:shortstring);
procedure int_str_unsigned(l:longword;out s:shortstring);
procedure int_str(l:int64;out s:shortstring);
procedure int_str_unsigned(l:qword;out s:shortstring);
And also an i386-speciic assembler variants in "./FPC_SRC/rtl/i386/i386.inc",
which I suspect use approach similar to yours, but I'm not sure they are
"enabled"..
{$if defined(disabled) and defined(regcall)}
procedure int_str(l:longword;out s:string);
...
procedure int_str(l:longint;out s:string);
{Optimized for speed, but balanced with size.}
const digits:array[0..9] of cardinal=
(0,10,100,1000,10000,
100000,1000000,10000000,
100000000,1000000000);
...
{$endif}
So You can try to propose your changes to "generic.inc"..
---
WBR,
Max.
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel