Re: [PATCH 0/1] vsprintf: optimize decimal conversion (again)

roma1390
2012-03-28T05:56:36Z

On 2012.03.27 18:42, Denys Vlasenko wrote:
> On Tue, Mar 27, 2012 at 2:08 PM, roma1390<roma1390@gmail.com> wrote:
>> On 2012.03.26 21:47, Denys Vlasenko wrote:
>>>
>>> Please find test programs attached.
>>>
>>> 32-bit test programs were built using gcc 4.6.2
>>> 64-bit test programs were built using gcc 4.2.1
>>> Command line: gcc --static [-m32] -O2 -Wall test_{org,new}.c
>>
>> Can't compile reference for arm:
>> $ arm-linux-gnueabi-gcc -O2 -Wall test_org.c -o test_org
>> test_org.c: In function ‘put_dec’:
>> test_org.c:101: error: impossible constraint in ‘asm’
>> test_org.c:101: error: impossible constraint in ‘asm’
>> test_org.c:101: error: impossible constraint in ‘asm’
>
> Please find a modified test_header.c attached.
> I tested and it builds in my arm emulator.

Run on same:
2.6.32-5-kirkwood #1 Tue Jan 17 05:11:52 UTC 2012 armv5tel GNU/Linux
GCC version:
gcc version 4.4.5 (Debian 4.4.5-8), Target: arm-linux-gnueabi
Compiled with:
arm-linux-gnueabi-gcc -O2 -Wall test_{org,new}.c -o test_{org,new}

run default priority on almost idle machine:

./test_org
Conversions per second: 8:4716000 123:3896000 123456:2756000 12345678:2412000
123456789:2380000 2^32:2348000 2^64:1400000
Conversions per second: 8:4556000 123:3892000 123456:2760000 12345678:2496000
123456789:2384000 2^32:2264000 2^64:1400000
Conversions per second: 8:4716000 123:3896000 123456:2664000 12345678:2496000
123456789:2388000 2^32:2348000 2^64:1400000
Conversions per second: 8:4716000 123:3892000 123456:2760000 12345678:2496000
123456789:2292000 2^32:2348000 2^64:1400000
./test_org
Conversions per second: 8:4716000 123:3748000 123456:2760000 12345678:2496000
123456789:2388000 2^32:2348000 2^64:1348000
Conversions per second: 8:4716000 123:3896000 123456:2756000 12345678:2408000
123456789:2384000 2^32:2348000 2^64:1400000
Conversions per second: 8:4540000 123:3896000 123456:2648000 12345678:2496000
123456789:2388000 2^32:2268000 2^64:1400000
Conversions per second: 8:4716000 123:3888000 123456:2664000 12345678:2496000
123456789:2388000 2^32:2344000 2^64:1400000

./test_new
Conversions per second: 8:5496000 123:4564000 123456:3536000 12345678:3408000
123456789:1168000 2^32:976000 2^64:532000
Conversions per second: 8:5524000 123:4568000 123456:3692000 12345678:3404000
123456789:1132000 2^32:972000 2^64:532000
Conversions per second: 8:5528000 123:4404000 123456:3684000 12345678:3408000
123456789:1168000 2^32:976000 2^64:516000
Conversions per second: 8:5528000 123:4568000 123456:3692000 12345678:3288000
123456789:1168000 2^32:976000 2^64:532000
./test_new
Conversions per second: 8:5524000 123:4416000 123456:3688000 12345678:3400000
123456789:1172000 2^32:972000 2^64:516000
Conversions per second: 8:5520000 123:4568000 123456:3692000 12345678:3276000
123456789:1168000 2^32:976000 2^64:532000
Conversions per second: 8:5344000 123:4552000 123456:3692000 12345678:3404000
123456789:1168000 2^32:944000 2^64:532000
Conversions per second: 8:5528000 123:4568000 123456:3556000 12345678:3404000
123456789:1168000 2^32:976000 2^64:532000

I will run the long running correctness test, and post results later. But this
can take a while...