/************************************************************************ The test module for the machine-dependent utilities (c) 1995 Innobase Oy Created 11/28/1995 Heikki Tuuri *************************************************************************/ #include "../mach0data.h" byte arr[4000000]; /********************************************************************* Test for ulint write and read. */ void test1(void) /*=======*/ { ulint a, i, j; ulint tm, oldtm; printf("-------------------------------------------\n"); printf("TEST 1. Speed test of ulint read and write \n"); a = 0; oldtm = ut_clock(); for (j = 0; j < 100; j++) { for (i = 0; i < 10000; i++) { a += mach_read_from_4(arr + i * 4); } } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", j * i, tm - oldtm); oldtm = ut_clock(); for (j = 0; j < 100; j++) { for (i = 0; i < 10000; i++) { a += mach_read(arr + i * 4); } } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", j * i, tm - oldtm); oldtm = ut_clock(); for (j = 0; j < 100; j++) { for (i = 0; i < 10000; i++) { a += mach_read_from_4(arr + i * 4 + 1); } } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", j * i, tm - oldtm); oldtm = ut_clock(); for (j = 0; j < 100; j++) { for (i = 0; i < 10000; i++) { a += mach_read(arr + i * 4 + 1); } } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", j * i, tm - oldtm); oldtm = ut_clock(); for (i = 0; i < 1000000; i++) { a += mach_read_from_4(arr + i * 4); } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", i, tm - oldtm); oldtm = ut_clock(); for (i = 0; i < 1000000; i++) { a += mach_read(arr + i * 4); } tm = ut_clock(); printf("Wall clock time for read of %lu ulints %lu millisecs\n", i, tm - oldtm); oldtm = ut_clock(); for (j = 0; j < 100; j++) { for (i = 0; i < 10000; i++) { a += mach_read_from_2(arr + i * 2); } } tm = ut_clock(); printf("Wall clock time for read of %lu 16-bit ints %lu millisecs\n", j * i, tm - oldtm); } /********************************************************************* Test for ulint write and read. */ void test2(void) /*=======*/ { ulint a[2]; printf("-------------------------------------------\n"); printf("TEST 2. Correctness test of ulint read and write \n"); mach_write_to_4((byte*)&a, 737237727); ut_a(737237727 == mach_read_from_4((byte*)&a)); mach_write_to_2((byte*)&a, 7372); ut_a(7372 == mach_read_from_2((byte*)&a)); mach_write_to_1((byte*)&a, 27); ut_a(27 == mach_read_from_1((byte*)&a)); mach_write((byte*)&a, 737237727); ut_a(737237727 == mach_read((byte*)&a)); } void main(void) { test1(); test2(); printf("TEST SUCCESSFULLY COMPLETED!\n"); }