From 3031aeb9dd860f9cb1d0aa8463bd3816e33ad787 Mon Sep 17 00:00:00 2001 From: tickduan <417921451@qq.com> Date: Mon, 12 Jul 2021 13:32:00 +0800 Subject: [PATCH] prove coversion speed --- deps/SZ/sz/src/ByteToolkit.c | 70 +++++++++++++++--------------------- 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/deps/SZ/sz/src/ByteToolkit.c b/deps/SZ/sz/src/ByteToolkit.c index 41d315e815..032e9a10b8 100644 --- a/deps/SZ/sz/src/ByteToolkit.c +++ b/deps/SZ/sz/src/ByteToolkit.c @@ -14,25 +14,12 @@ INLINE int bytesToInt_bigEndian(unsigned char* bytes) { - int temp = 0; - int res = 0; - - res <<= 8; - temp = bytes[0] & 0xff; - res |= temp; - - res <<= 8; - temp = bytes[1] & 0xff; - res |= temp; - - res <<= 8; - temp = bytes[2] & 0xff; - res |= temp; - - res <<= 8; - temp = bytes[3] & 0xff; - res |= temp; - + int res; + unsigned char* des = (unsigned char*)&res; + des[0] = bytes[3]; + des[1] = bytes[2]; + des[2] = bytes[1]; + des[3] = bytes[0]; return res; } @@ -42,20 +29,18 @@ INLINE int bytesToInt_bigEndian(unsigned char* bytes) * */ INLINE void intToBytes_bigEndian(unsigned char *b, unsigned int num) { - b[0] = (unsigned char)(num >> 24); - b[1] = (unsigned char)(num >> 16); - b[2] = (unsigned char)(num >> 8); - b[3] = (unsigned char)(num); - - //note: num >> xxx already considered endian_type... -//if(dataEndianType==LITTLE_ENDIAN_DATA) -// symTransform_4bytes(*b); //change to BIG_ENDIAN_DATA + unsigned char* sou =(unsigned char*)# + b[0] = sou[3]; + b[1] = sou[2]; + b[2] = sou[1]; + b[3] = sou[0]; } /** * @endianType: refers to the endian_type of unsigned char* b. * */ INLINE long bytesToLong_bigEndian(unsigned char* b) { + long temp = 0; long res = 0; @@ -92,25 +77,29 @@ INLINE long bytesToLong_bigEndian(unsigned char* b) { res |= temp; return res; + } -INLINE void longToBytes_bigEndian(unsigned char *b, unsigned long num) +INLINE void longToBytes_bigEndian(unsigned char *b, long num) { -// arm32 + unsigned char* sou = (unsigned char*)# #if defined(_TD_LINUX_64) || defined(_TD_ARM_64) || defined(_TD_DARWIN_64) - b[0] = (unsigned char)(num>>56); - b[1] = (unsigned char)(num>>48); - b[2] = (unsigned char)(num>>40); - b[3] = (unsigned char)(num>>32); + // 8 bytes + b[7] = sou[0]; + b[6] = sou[1]; + b[5] = sou[2]; + b[4] = sou[3]; + b[3] = sou[4]; + b[2] = sou[5]; + b[1] = sou[6]; + b[0] = sou[7]; #else memset(b, 0, 4); + b[7] = sou[0]; + b[6] = sou[1]; + b[5] = sou[2]; + b[4] = sou[3]; #endif - b[4] = (unsigned char)(num>>24); - b[5] = (unsigned char)(num>>16); - b[6] = (unsigned char)(num>>8); - b[7] = (unsigned char)(num); -// if(dataEndianType==LITTLE_ENDIAN_DATA) -// symTransform_8bytes(*b); } //TODO: debug: lfBuf.lvalue could be actually little_endian.... @@ -135,9 +124,6 @@ INLINE short getPrecisionReqLength_float(float precision) int expValue = (ivalue & 0x7F800000) >> 23; expValue -= 127; -// unsigned char the1stManBit = (unsigned char)((ivalue & 0x00400000) >> 22); -// if(the1stManBit==1) -// expValue--; return (short)expValue; } -- GitLab