diff --git a/test/speed_test.cpp b/test/speed_test.cpp index dcae5a2..c31faa9 100644 --- a/test/speed_test.cpp +++ b/test/speed_test.cpp @@ -97,6 +97,34 @@ namespace t.report(); } + void test_big_int16() + { + cout << " no +\n "; + time(user::return_x_big_int16); + cout << " + int16_t argument\n "; + time(user::return_x_plus_y_big_int16); + cout << " + int16_t by value\n "; + time(user::return_x_plus_y_value_big_int16); + cout << " + int16_t in place\n "; + time(user::return_x_plus_y_in_place_big_int16); + cout << " + big_int16_t\n "; + time(user::return_x_plus_z_big_int16); + } + + void test_little_int16() + { + cout << " no +\n "; + time(user::return_x_little_int16); + cout << " + int16_t argument\n "; + time(user::return_x_plus_y_little_int16); + cout << " + int16_t by value\n "; + time(user::return_x_plus_y_value_little_int16); + cout << " + int16_t in place\n "; + time(user::return_x_plus_y_in_place_little_int16); + cout << " + little_int16_t\n "; + time(user::return_x_plus_z_little_int16); + } + void test_big_int32() { cout << " no +\n "; @@ -125,6 +153,34 @@ namespace time(user::return_x_plus_z_little_int32); } + void test_big_int64() + { + cout << " no +\n "; + time(user::return_x_big_int64); + cout << " + int64_t argument\n "; + time(user::return_x_plus_y_big_int64); + cout << " + int64_t by value\n "; + time(user::return_x_plus_y_value_big_int64); + cout << " + int64_t in place\n "; + time(user::return_x_plus_y_in_place_big_int64); + cout << " + big_int64_t\n "; + time(user::return_x_plus_z_big_int64); + } + + void test_little_int64() + { + cout << " no +\n "; + time(user::return_x_little_int64); + cout << " + int64_t argument\n "; + time(user::return_x_plus_y_little_int64); + cout << " + int64_t by value\n "; + time(user::return_x_plus_y_value_little_int64); + cout << " + int64_t in place\n "; + time(user::return_x_plus_y_in_place_little_int64); + cout << " + little_int64_t\n "; + time(user::return_x_plus_z_little_int64); + } + } // unnamed namespace //--------------------------------------------------------------------------------------// @@ -137,6 +193,13 @@ int cpp_main(int argc, char* argv[]) cout << endl << "------------------------------------------------------" << endl; + cout << endl << "big, 16-bit..." << endl; + test_big_int16(); + cout << endl << "little, 16-bit..." << endl; + test_little_int16(); + + cout << endl << "------------------------------------------------------" << endl; + cout << endl << "big, 32-bit..." << endl; test_big_int32(); cout << endl << "little, 32-bit..." << endl; @@ -144,6 +207,13 @@ int cpp_main(int argc, char* argv[]) cout << endl << "------------------------------------------------------" << endl; + cout << endl << "big, 64-bit..." << endl; + test_big_int64(); + cout << endl << "little, 64-bit..." << endl; + test_little_int64(); + + cout << endl << "------------------------------------------------------" << endl; + //cout << "float" << endl; //test(1.2345f); diff --git a/test/speed_test_functions.cpp b/test/speed_test_functions.cpp index e974aff..873cc0b 100644 --- a/test/speed_test_functions.cpp +++ b/test/speed_test_functions.cpp @@ -18,19 +18,37 @@ namespace user { + int16_t return_x_big_int16(int16_t x, int16_t, big_int16_t) BOOST_NOEXCEPT {return x;} + int16_t return_x_little_int16(int16_t x, int16_t, little_int16_t) BOOST_NOEXCEPT {return x;} + int16_t return_x_plus_y_big_int16(int16_t x, int16_t y, big_int16_t) BOOST_NOEXCEPT {return x+y;} + int16_t return_x_plus_y_little_int16(int16_t x, int16_t y, little_int16_t) BOOST_NOEXCEPT {return x+y;} + int16_t return_x_plus_y_value_big_int16(int16_t x, int16_t y, big_int16_t) BOOST_NOEXCEPT {return x+big_endian_value(y);} + int16_t return_x_plus_y_value_little_int16(int16_t x, int16_t y, little_int16_t) BOOST_NOEXCEPT {return x+little_endian_value(y);} + int16_t return_x_plus_y_in_place_big_int16(int16_t x, int16_t y, big_int16_t) BOOST_NOEXCEPT {big_endian(y);return x+y;} + int16_t return_x_plus_y_in_place_little_int16(int16_t x, int16_t y, little_int16_t) BOOST_NOEXCEPT {little_endian(y);return x+y;} + int16_t return_x_plus_z_big_int16(int16_t x, int16_t, big_int16_t z) BOOST_NOEXCEPT {return x+z;} + int16_t return_x_plus_z_little_int16(int16_t x, int16_t, little_int16_t z) BOOST_NOEXCEPT {return x+z;} + int32_t return_x_big_int32(int32_t x, int32_t, big_int32_t) BOOST_NOEXCEPT {return x;} int32_t return_x_little_int32(int32_t x, int32_t, little_int32_t) BOOST_NOEXCEPT {return x;} - int32_t return_x_plus_y_big_int32(int32_t x, int32_t y, big_int32_t) BOOST_NOEXCEPT {return x+y;} int32_t return_x_plus_y_little_int32(int32_t x, int32_t y, little_int32_t) BOOST_NOEXCEPT {return x+y;} - int32_t return_x_plus_y_value_big_int32(int32_t x, int32_t y, big_int32_t) BOOST_NOEXCEPT {return x+big_endian_value(y);} int32_t return_x_plus_y_value_little_int32(int32_t x, int32_t y, little_int32_t) BOOST_NOEXCEPT {return x+little_endian_value(y);} - int32_t return_x_plus_y_in_place_big_int32(int32_t x, int32_t y, big_int32_t) BOOST_NOEXCEPT {big_endian(y);return x+y;} int32_t return_x_plus_y_in_place_little_int32(int32_t x, int32_t y, little_int32_t) BOOST_NOEXCEPT {little_endian(y);return x+y;} - int32_t return_x_plus_z_big_int32(int32_t x, int32_t, big_int32_t z) BOOST_NOEXCEPT {return x+z;} int32_t return_x_plus_z_little_int32(int32_t x, int32_t, little_int32_t z) BOOST_NOEXCEPT {return x+z;} + int64_t return_x_big_int64(int64_t x, int64_t, big_int64_t) BOOST_NOEXCEPT {return x;} + int64_t return_x_little_int64(int64_t x, int64_t, little_int64_t) BOOST_NOEXCEPT {return x;} + int64_t return_x_plus_y_big_int64(int64_t x, int64_t y, big_int64_t) BOOST_NOEXCEPT {return x+y;} + int64_t return_x_plus_y_little_int64(int64_t x, int64_t y, little_int64_t) BOOST_NOEXCEPT {return x+y;} + int64_t return_x_plus_y_value_big_int64(int64_t x, int64_t y, big_int64_t) BOOST_NOEXCEPT {return x+big_endian_value(y);} + int64_t return_x_plus_y_value_little_int64(int64_t x, int64_t y, little_int64_t) BOOST_NOEXCEPT {return x+little_endian_value(y);} + int64_t return_x_plus_y_in_place_big_int64(int64_t x, int64_t y, big_int64_t) BOOST_NOEXCEPT {big_endian(y);return x+y;} + int64_t return_x_plus_y_in_place_little_int64(int64_t x, int64_t y, little_int64_t) BOOST_NOEXCEPT {little_endian(y);return x+y;} + int64_t return_x_plus_z_big_int64(int64_t x, int64_t, big_int64_t z) BOOST_NOEXCEPT {return x+z;} + int64_t return_x_plus_z_little_int64(int64_t x, int64_t, little_int64_t z) BOOST_NOEXCEPT {return x+z;} + } diff --git a/test/speed_test_functions.hpp b/test/speed_test_functions.hpp index 9d4b473..a123129 100644 --- a/test/speed_test_functions.hpp +++ b/test/speed_test_functions.hpp @@ -24,21 +24,39 @@ namespace user using namespace boost; using namespace boost::endian; + int16_t return_x_big_int16(int16_t x, int16_t y, big_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_little_int16(int16_t x, int16_t y, little_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_y_big_int16(int16_t x, int16_t y, big_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_y_little_int16(int16_t x, int16_t y, little_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_y_value_big_int16(int16_t x, int16_t y, big_int16_t) BOOST_NOEXCEPT; + int16_t return_x_plus_y_value_little_int16(int16_t x, int16_t y, little_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_y_in_place_big_int16(int16_t x, int16_t y, big_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_y_in_place_little_int16(int16_t x, int16_t y, little_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_z_big_int16(int16_t x, int16_t y, big_int16_t z) BOOST_NOEXCEPT; + int16_t return_x_plus_z_little_int16(int16_t x, int16_t y, little_int16_t z) BOOST_NOEXCEPT; + int32_t return_x_big_int32(int32_t x, int32_t y, big_int32_t z) BOOST_NOEXCEPT; int32_t return_x_little_int32(int32_t x, int32_t y, little_int32_t z) BOOST_NOEXCEPT; - int32_t return_x_plus_y_big_int32(int32_t x, int32_t y, big_int32_t z) BOOST_NOEXCEPT; int32_t return_x_plus_y_little_int32(int32_t x, int32_t y, little_int32_t z) BOOST_NOEXCEPT; - int32_t return_x_plus_y_value_big_int32(int32_t x, int32_t y, big_int32_t) BOOST_NOEXCEPT; int32_t return_x_plus_y_value_little_int32(int32_t x, int32_t y, little_int32_t z) BOOST_NOEXCEPT; - int32_t return_x_plus_y_in_place_big_int32(int32_t x, int32_t y, big_int32_t z) BOOST_NOEXCEPT; int32_t return_x_plus_y_in_place_little_int32(int32_t x, int32_t y, little_int32_t z) BOOST_NOEXCEPT; - int32_t return_x_plus_z_big_int32(int32_t x, int32_t y, big_int32_t z) BOOST_NOEXCEPT; int32_t return_x_plus_z_little_int32(int32_t x, int32_t y, little_int32_t z) BOOST_NOEXCEPT; + int64_t return_x_big_int64(int64_t x, int64_t y, big_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_little_int64(int64_t x, int64_t y, little_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_y_big_int64(int64_t x, int64_t y, big_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_y_little_int64(int64_t x, int64_t y, little_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_y_value_big_int64(int64_t x, int64_t y, big_int64_t) BOOST_NOEXCEPT; + int64_t return_x_plus_y_value_little_int64(int64_t x, int64_t y, little_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_y_in_place_big_int64(int64_t x, int64_t y, big_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_y_in_place_little_int64(int64_t x, int64_t y, little_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_z_big_int64(int64_t x, int64_t y, big_int64_t z) BOOST_NOEXCEPT; + int64_t return_x_plus_z_little_int64(int64_t x, int64_t y, little_int64_t z) BOOST_NOEXCEPT; + } #endif