|
|
@@ -1,41 +1,43 @@
|
|
|
auto bv_size = 800000;
|
|
|
auto step = 1;
|
|
|
|
|
|
-auto sqBitVect = blob((bv_size / 8) + 512);
|
|
|
+const BITVEC_SZ = 8;
|
|
|
+auto sqBitVect = blob((bv_size / BITVEC_SZ) + 512);
|
|
|
+//auto sqBitVect = array_int8((bv_size / BITVEC_SZ) + 512);
|
|
|
//sqBitVect.memset(0, 0, sqBitVect.len()-1);
|
|
|
|
|
|
-auto bitGet(bpos)
|
|
|
+int_t bitGet(size_t bpos)
|
|
|
{
|
|
|
- auto cpos = bpos/8;
|
|
|
- auto b8 = 1 << (bpos%8);
|
|
|
+ auto cpos = bpos/BITVEC_SZ;
|
|
|
+ auto b8 = 1 << (bpos%BITVEC_SZ);
|
|
|
return sqBitVect[cpos] & b8;
|
|
|
}
|
|
|
|
|
|
-auto bitSet(bpos)
|
|
|
+void bitSet(size_t bpos)
|
|
|
{
|
|
|
- auto cpos = bpos/8;
|
|
|
- auto b8 = 1 << (bpos%8);
|
|
|
+ auto cpos = bpos/BITVEC_SZ;
|
|
|
+ auto b8 = 1 << (bpos%BITVEC_SZ);
|
|
|
sqBitVect[cpos] |= b8;
|
|
|
}
|
|
|
|
|
|
-auto bitClear(bpos)
|
|
|
+void bitClear(size_t bpos)
|
|
|
{
|
|
|
- auto cpos = bpos/8;
|
|
|
- auto b8 = 1 << (bpos%8);
|
|
|
+ auto cpos = bpos/BITVEC_SZ;
|
|
|
+ auto b8 = 1 << (bpos%BITVEC_SZ);
|
|
|
sqBitVect[cpos] &= (~b8);
|
|
|
}
|
|
|
|
|
|
-auto bitTogle(bpos)
|
|
|
+void bitTogle(size_t bpos)
|
|
|
{
|
|
|
- auto cpos = bpos/8;
|
|
|
- auto b8 = 1 << (bpos%8);
|
|
|
+ auto cpos = bpos/BITVEC_SZ;
|
|
|
+ auto b8 = 1 << (bpos%BITVEC_SZ);
|
|
|
sqBitVect[cpos] ^= b8;
|
|
|
}
|
|
|
|
|
|
auto bit_pos = 3;
|
|
|
|
|
|
-auto cpos = bit_pos/8;
|
|
|
-auto m8 = (bit_pos%8);
|
|
|
+auto cpos = bit_pos/BITVEC_SZ;
|
|
|
+auto m8 = (bit_pos%BITVEC_SZ);
|
|
|
auto b8 = 1 << m8;
|
|
|
|
|
|
print(bit_pos, cpos, m8, b8);
|
|
|
@@ -50,6 +52,8 @@ print(bitGet(bit_pos));
|
|
|
|
|
|
print("===");
|
|
|
++bit_pos;
|
|
|
+if(type(sqBitVect) != "array")
|
|
|
+{
|
|
|
print(sqBitVect.bitGet(bit_pos));
|
|
|
sqBitVect.bitSet(bit_pos);
|
|
|
print(sqBitVect.bitGet(bit_pos));
|
|
|
@@ -57,6 +61,7 @@ sqBitVect.bitClear(bit_pos);
|
|
|
print(sqBitVect.bitGet(bit_pos));
|
|
|
sqBitVect.bitTogle(bit_pos);
|
|
|
print(sqBitVect.bitGet(bit_pos));
|
|
|
+}
|
|
|
|
|
|
//return;
|
|
|
|
|
|
@@ -92,25 +97,29 @@ start_milli = os.getmillicount();
|
|
|
for(auto i=0; i < bv_size; i+=step) bitGet(i);
|
|
|
print("Time spent get sq", os.getmillicount() - start_milli);
|
|
|
|
|
|
-start_milli = os.getmillicount();
|
|
|
-for(auto i=0; i < bv_size; i+=step) sqBitVect.bitSet(i);
|
|
|
-print("Time spent set blob", os.getmillicount() - start_milli);
|
|
|
+auto cbitSet, cbitGet;
|
|
|
|
|
|
-start_milli = os.getmillicount();
|
|
|
-for(auto i=0; i < bv_size; i+=step) sqBitVect.bitGet(i);
|
|
|
-print("Time spent get blob", os.getmillicount() - start_milli);
|
|
|
+if(type(sqBitVect) != "array")
|
|
|
+{
|
|
|
+ start_milli = os.getmillicount();
|
|
|
+ for(auto i=0; i < bv_size; i+=step) sqBitVect.bitSet(i);
|
|
|
+ print("Time spent set blob", os.getmillicount() - start_milli);
|
|
|
|
|
|
-auto cbitSet = sqBitVect.bitSet;
|
|
|
-auto cbitGet = sqBitVect.bitGet;
|
|
|
+ start_milli = os.getmillicount();
|
|
|
+ for(auto i=0; i < bv_size; i+=step) sqBitVect.bitGet(i);
|
|
|
+ print("Time spent get blob", os.getmillicount() - start_milli);
|
|
|
|
|
|
-start_milli = os.getmillicount();
|
|
|
-for(auto i=0; i < bv_size; i+=step) rawcall(cbitSet, sqBitVect, i);
|
|
|
-print("Time spent set rawcall blob", os.getmillicount() - start_milli);
|
|
|
+ cbitSet = sqBitVect.bitSet;
|
|
|
+ cbitGet = sqBitVect.bitGet;
|
|
|
|
|
|
-start_milli = os.getmillicount();
|
|
|
-for(auto i=0; i < bv_size; i+=step) rawcall(cbitGet, sqBitVect, i);
|
|
|
-print("Time spent get rawcall blob", os.getmillicount() - start_milli);
|
|
|
+ start_milli = os.getmillicount();
|
|
|
+ for(auto i=0; i < bv_size; i+=step) rawcall(cbitSet, sqBitVect, i);
|
|
|
+ print("Time spent set rawcall blob", os.getmillicount() - start_milli);
|
|
|
|
|
|
+ start_milli = os.getmillicount();
|
|
|
+ for(auto i=0; i < bv_size; i+=step) rawcall(cbitGet, sqBitVect, i);
|
|
|
+ print("Time spent get rawcall blob", os.getmillicount() - start_milli);
|
|
|
+}
|
|
|
cbitSet = BitVector.set;
|
|
|
cbitGet = BitVector.test;
|
|
|
print(cbitSet, cbitGet);
|
|
|
@@ -124,9 +133,10 @@ start_milli = os.getmillicount();
|
|
|
for(auto i=1; i <= bv_size; i+=step) rawcall(cbitGet, bv, i);
|
|
|
print("Time spent get rawcall bv", os.getmillicount() - start_milli);
|
|
|
|
|
|
-bv = array(bv_size);
|
|
|
+//bv = array(bv_size);
|
|
|
+bv = array_int8(bv_size);
|
|
|
start_milli = os.getmillicount();
|
|
|
-for(auto i=0; i < bv_size; i+=step) bv[i] = true;
|
|
|
+for(auto i=0; i < bv_size; i+=step) bv[i] = 1;
|
|
|
print("Time spent set array", os.getmillicount() - start_milli);
|
|
|
|
|
|
start_milli = os.getmillicount();
|