Your complete loop got optimized away in the native test cases. Because
of the try/catch block the compiler couldn't do this in the other cases.
So you are benchmarking nothing vs somthing.
Greetings,
Oswin
> cout << format("Native Integer Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> start = high_resolution_clock::now();
> for( int32_t n = 0; n < COUNT; ++n )
> {
> try
> {
> int32_t i32 = 100;
> int16_t i16 = numeric_cast< int16_t >( i32 );
> }
> catch( const bad_numeric_cast& e )
> {
> cout << e.what() << endl;
> }
> }
> cout << format("Boost Integer Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> start = high_resolution_clock::now();
> for( int32_t n = 0; n < COUNT; ++n )
> {
> float f = 100.0f;
> int32_t i = static_cast< int32_t >( f );
> }
> cout << format("Native Floating-Integer Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> start = high_resolution_clock::now();
> for( int32_t n = 0; n < COUNT; ++n )
> {
> try
> {
> float f = 123.0f;
> int32_t i = numeric_cast< int32_t >( f );
> }
> catch( const bad_numeric_cast& e )
> {
> cout << e.what() << endl;
> }
> }
> cout << format("Boost Floating-Integer Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> start = high_resolution_clock::now();
> for( int32_t n = 0; n < COUNT; ++n )
> {
> int32_t i = 132;
> float f = static_cast< float >( i );
> }
> cout << format("Native Integer-Floating Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> start = high_resolution_clock::now();
> for( int32_t n = 0; n < COUNT; ++n )
> {
> try
> {
> int32_t i = 128;
> float f = numeric_cast< float >( i );
> }
> catch( const bad_numeric_cast& e )
> {
> cout << e.what() << endl;
> }
> }
> cout << format("Boost Integer-Floating Cast: %1%n") % ( (
> high_resolution_clock::now() - start ) / COUNT );
>
> return 0;
> };
>
> Result:
> Native Integer Cast: 3 nanoseconds
> Boost Integer Cast: 311 nanoseconds
> Native Floating-Integer Cast: 4 nanoseconds
> Boost Floating-Integer Cast: 430 nanoseconds
> Native Integer-Floating Cast: 2 nanoseconds
> Boost Integer-Floating Cast: 106 nanoseconds
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users
Never benchmark in debug mode. Moreover, never ever benchmark boost
code in debug mode.
>> Boost...@lists.boost.org [1]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [2]
>
>
>
> Links:
> ------
> [1] mailto:Boost...@lists.boost.org
> [2] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [3] mailto:Oswin....@ruhr-uni-bochum.de
[1] mailto:Boost-users@lists.boost.org
[2] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[3] mailto:Oswin.Krause@ruhr-uni-bochum.de
the results turnd out to have a high variance due to the low time
usage. SInce just choosing higher count numbers already lead to an
overflow, i hacked in the following loop:
nanoseconds profile( PROFILE_FUNC _profileFunc, uint32_t _count )
{
high_resolution_clock::time_point start = high_resolution_clock::now();
double summ = 0;
for(std::size_t i = 0; i != 100000; ++i){
uint32_t sum = i;
_profileFunc( _count, sum );
summ +=sum;
}
nanoseconds ns = ( high_resolution_clock::now() - start ) / _count;
cout << summ << endl;
return ns;
}
results:
Native Integer Cast: 26729 nanoseconds
Boost Integer Cast: 26449 nanoseconds
Native Integer-Floating Cast: 105479 nanoseconds
Boost Integer-Floating Cast: 105455 nanoseconds
Native Floating-Integer Cast: 168933 nanoseconds
Boost Floating-Integer Cast: 453505 nanoseconds
so no overhead in Integer-Integer or Integer-Floating. But
Floating-Integer has bad performance.
>> >>>> Boost...@lists.boost.org [4] [1]
>> >>>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [5]
>> [2]
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> Links:
>> >>> ------
>> >>> [1] mailto:Boost...@lists.boost.org [6]
>> >>> [2] http://lists.boost.org/mailman/listinfo.cgi/boost-users [7]
>> >>> [3] mailto:Oswin....@ruhr-uni-bochum.de [8]
>> >>
>> >>
>> >> _______________________________________________
>> >> Boost-users mailing list
>> >> Boost...@lists.boost.org [9]
>> >> http://lists.boost.org/mailman/listinfo.cgi/boost-users [10]
>> >
>> >
>> >
>> > _______________________________________________
>> > Boost-users mailing list
>> > Boost...@lists.boost.org [11]
>> > http://lists.boost.org/mailman/listinfo.cgi/boost-users [12]
>> _______________________________________________
>> Boost-users mailing list
>> Boost...@lists.boost.org [13]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [14]
>
>
>
> Links:
> ------
> [1] mailto:tangji...@gmail.com
> [2] mailto:Oswin....@ruhr-uni-bochum.de
> [3] mailto:Oswin....@ruhr-uni-bochum.de
> [4] mailto:Boost...@lists.boost.org
> [5] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [6] mailto:Boost...@lists.boost.org
> [7] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [8] mailto:Oswin....@ruhr-uni-bochum.de
> [9] mailto:Boost...@lists.boost.org
> [10] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [11] mailto:Boost...@lists.boost.org
> [12] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [13] mailto:Boost...@lists.boost.org
> [14] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [15] mailto:brian...@gmail.com
>>> [1] mailto:Boost-users@lists.boost.org [6]
>>> [2] http://lists.boost.org/mailman/listinfo.cgi/boost-users [7]
>>> [3] mailto:Oswin.Krause@ruhr-uni-bochum.de [8]
>>
>>
>> _______________________________________________
>> Boost-users mailing list
>> Boost...@lists.boost.org [9]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [10]
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost...@lists.boost.org [11]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users [12]
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org [13]
http://lists.boost.org/mailman/listinfo.cgi/boost-users [14]
Links:
------
[1] mailto:tangji...@gmail.com
[2] mailto:Oswin.Krause@ruhr-uni-bochum.de
[3] mailto:Oswin.Krause@ruhr-uni-bochum.de
[4] mailto:Boost-users@lists.boost.org
[5] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[6] mailto:Boost-users@lists.boost.org
[7] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[8] mailto:Oswin.Krause@ruhr-uni-bochum.de
[9] mailto:Boost-users@lists.boost.org
[10] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[11] mailto:Boost-users@lists.boost.org
[12] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[13] mailto:Boost-users@lists.boost.org
is this the total run time? can you show the code? Your run times are
the same as before. you should expect a runtime factor of 1000+ in the
end result - or the compiler was too smart.
On 2012-10-16 09:47, Tang Jiang Jun wrote:
> Hi,
>
>>>> >>>> Boost...@lists.boost.org [4] [4] [1]
>>>> >>>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>>> [5] [5]
>>>> [2]
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>> Links:
>>>> >>> ------
>>>> >>> [1] mailto:Boost...@lists.boost.org [6] [6]
>>>> >>> [2] http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>>> [7] [7]
>>>> >>> [3] mailto:Oswin....@ruhr-uni-bochum.de [8] [8]
>>>> >>
>>>> >>
>>>> >> _______________________________________________
>>>> >> Boost-users mailing list
>>>> >> Boost...@lists.boost.org [9] [9]
>>>> >> http://lists.boost.org/mailman/listinfo.cgi/boost-users [10]
>>>> [10]
>>>> >
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > Boost-users mailing list
>>>> > Boost...@lists.boost.org [11] [11]
>>>> > http://lists.boost.org/mailman/listinfo.cgi/boost-users [12]
>>>> [12]
>>>> _______________________________________________
>>>> Boost-users mailing list
>>>> Boost...@lists.boost.org [13] [13]
>>>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [14]
>>>> [14]
>>>
>>> Links:
>>> ------
>>> [1] mailto:tangji...@gmail.com [16]
>>> [2] mailto:Oswin....@ruhr-uni-bochum.de [17]
>>> [3] mailto:Oswin....@ruhr-uni-bochum.de [18]
>>> [4] mailto:Boost...@lists.boost.org [19]
>>> [5] http://lists.boost.org/mailman/listinfo.cgi/boost-users [20]
>>> [6] mailto:Boost...@lists.boost.org [21]
>>> [7] http://lists.boost.org/mailman/listinfo.cgi/boost-users [22]
>>> [8] mailto:Oswin....@ruhr-uni-bochum.de [23]
>>> [9] mailto:Boost...@lists.boost.org [24]
>>> [10] http://lists.boost.org/mailman/listinfo.cgi/boost-users [25]
>>> [11] mailto:Boost...@lists.boost.org [26]
>>> [12] http://lists.boost.org/mailman/listinfo.cgi/boost-users [27]
>>> [13] mailto:Boost...@lists.boost.org [28]
>>> [14] http://lists.boost.org/mailman/listinfo.cgi/boost-users [29]
>>> [15] mailto:brian...@gmail.com [30]
>>
>> _______________________________________________
>> Boost-users mailing list
>> Boost...@lists.boost.org [31]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [32]
>
>
>
> Links:
> ------
> [1] mailto:tangji...@gmail.com
> [2] mailto:Oswin....@ruhr-uni-bochum.de
> [3] mailto:Oswin....@ruhr-uni-bochum.de
> [4] mailto:Boost...@lists.boost.org
> [5] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [6] mailto:Boost...@lists.boost.org
> [7] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [8] mailto:Oswin....@ruhr-uni-bochum.de
> [9] mailto:Boost...@lists.boost.org
> [10] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [11] mailto:Boost...@lists.boost.org
> [12] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [13] mailto:Boost...@lists.boost.org
> [14] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [15] mailto:brian...@gmail.com
> [16] mailto:tangji...@gmail.com
> [17] mailto:Oswin....@ruhr-uni-bochum.de
> [18] mailto:Oswin....@ruhr-uni-bochum.de
> [19] mailto:Boost...@lists.boost.org
> [20] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [21] mailto:Boost...@lists.boost.org
> [22] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [23] mailto:Oswin....@ruhr-uni-bochum.de
> [24] mailto:Boost...@lists.boost.org
> [25] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [26] mailto:Boost...@lists.boost.org
> [27] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [28] mailto:Boost...@lists.boost.org
> [29] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [30] mailto:brian...@gmail.com
> [31] mailto:Boost...@lists.boost.org
> [32] http://lists.boost.org/mailman/listinfo.cgi/boost-users
> [33] mailto:Oswin....@ruhr-uni-bochum.de
>>> [1] mailto:Boost-users@lists.boost.org [6] [6]
>>> [2] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[7] [7]
>>> [3] mailto:Oswin.Krause@ruhr-uni-bochum.de [8] [8]
>>
>>
>> _______________________________________________
>> Boost-users mailing list
>> Boost...@lists.boost.org [9] [9]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users [10]> Boost...@lists.boost.org [11] [11]
[10]
>
>
>
> _______________________________________________
> Boost-users mailing list
> http://lists.boost.org/mailman/listinfo.cgi/boost-users [12]Boost...@lists.boost.org [13] [13]
[12]
_______________________________________________
Boost-users mailing list
http://lists.boost.org/mailman/listinfo.cgi/boost-users [14]
[14]
Links:
------
[1] mailto:tangji...@gmail.com [16]
[2] mailto:Oswin.Krause@ruhr-uni-bochum.de [17]
[3] mailto:Oswin.Krause@ruhr-uni-bochum.de [18]
[4] mailto:Boost-users@lists.boost.org [19]
[5] http://lists.boost.org/mailman/listinfo.cgi/boost-users [20]
[6] mailto:Boost-users@lists.boost.org [21]
[7] http://lists.boost.org/mailman/listinfo.cgi/boost-users [22]
[8] mailto:Oswin.Krause@ruhr-uni-bochum.de [23]
[9] mailto:Boost-users@lists.boost.org [24]
[10] http://lists.boost.org/mailman/listinfo.cgi/boost-users [25]
[11] mailto:Boost-users@lists.boost.org [26]
[12] http://lists.boost.org/mailman/listinfo.cgi/boost-users [27]
[13] mailto:Boost-users@lists.boost.org [28]
[14] http://lists.boost.org/mailman/listinfo.cgi/boost-users [29]
[15] mailto:brian...@gmail.com [30]
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org [31]
http://lists.boost.org/mailman/listinfo.cgi/boost-users [32]
[2] mailto:Oswin.Krause@ruhr-uni-bochum.de
[3] mailto:Oswin.Krause@ruhr-uni-bochum.de
[4] mailto:Boost-users@lists.boost.org
[5] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[6] mailto:Boost-users@lists.boost.org
[7] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[8] mailto:Oswin.Krause@ruhr-uni-bochum.de
[9] mailto:Boost-users@lists.boost.org
[10] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[11] mailto:Boost-users@lists.boost.org
[12] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[13] mailto:Boost-users@lists.boost.org
[16] mailto:tangji...@gmail.com
[17] mailto:Oswin.Krause@ruhr-uni-bochum.de
[18] mailto:Oswin.Krause@ruhr-uni-bochum.de
[19] mailto:Boost-users@lists.boost.org
[20] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[21] mailto:Boost-users@lists.boost.org
[22] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[23] mailto:Oswin.Krause@ruhr-uni-bochum.de
[24] mailto:Boost-users@lists.boost.org
[25] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[26] mailto:Boost-users@lists.boost.org
[27] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[28] mailto:Boost-users@lists.boost.org
[31] mailto:Boost-users@lists.boost.org
[32] http://lists.boost.org/mailman/listinfo.cgi/boost-users
[33] mailto:Oswin.Krause@ruhr-uni-bochum.de