|
|
@ -243,7 +243,6 @@ uint64 ReadCompactSize(Stream& is) |
|
|
|
#define FLATDATA(obj) REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj))) |
|
|
|
#define FLATDATA(obj) REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj))) |
|
|
|
|
|
|
|
|
|
|
|
/** Wrapper for serializing arrays and POD.
|
|
|
|
/** Wrapper for serializing arrays and POD.
|
|
|
|
* There's a clever template way to make arrays serialize normally, but MSVC6 doesn't support it. |
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class CFlatData |
|
|
|
class CFlatData |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1010,57 +1009,6 @@ public: |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#ifdef TESTCDATASTREAM |
|
|
|
|
|
|
|
// VC6sp6
|
|
|
|
|
|
|
|
// CDataStream:
|
|
|
|
|
|
|
|
// n=1000 0 seconds
|
|
|
|
|
|
|
|
// n=2000 0 seconds
|
|
|
|
|
|
|
|
// n=4000 0 seconds
|
|
|
|
|
|
|
|
// n=8000 0 seconds
|
|
|
|
|
|
|
|
// n=16000 0 seconds
|
|
|
|
|
|
|
|
// n=32000 0 seconds
|
|
|
|
|
|
|
|
// n=64000 1 seconds
|
|
|
|
|
|
|
|
// n=128000 1 seconds
|
|
|
|
|
|
|
|
// n=256000 2 seconds
|
|
|
|
|
|
|
|
// n=512000 4 seconds
|
|
|
|
|
|
|
|
// n=1024000 8 seconds
|
|
|
|
|
|
|
|
// n=2048000 16 seconds
|
|
|
|
|
|
|
|
// n=4096000 32 seconds
|
|
|
|
|
|
|
|
// stringstream:
|
|
|
|
|
|
|
|
// n=1000 1 seconds
|
|
|
|
|
|
|
|
// n=2000 1 seconds
|
|
|
|
|
|
|
|
// n=4000 13 seconds
|
|
|
|
|
|
|
|
// n=8000 87 seconds
|
|
|
|
|
|
|
|
// n=16000 400 seconds
|
|
|
|
|
|
|
|
// n=32000 1660 seconds
|
|
|
|
|
|
|
|
// n=64000 6749 seconds
|
|
|
|
|
|
|
|
// n=128000 27241 seconds
|
|
|
|
|
|
|
|
// n=256000 109804 seconds
|
|
|
|
|
|
|
|
#include <iostream> |
|
|
|
|
|
|
|
int main(int argc, char *argv[]) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
vector<unsigned char> vch(0xcc, 250); |
|
|
|
|
|
|
|
printf("CDataStream:\n"); |
|
|
|
|
|
|
|
for (int n = 1000; n <= 4500000; n *= 2) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CDataStream ss; |
|
|
|
|
|
|
|
time_t nStart = time(NULL); |
|
|
|
|
|
|
|
for (int i = 0; i < n; i++) |
|
|
|
|
|
|
|
ss.write((char*)&vch[0], vch.size()); |
|
|
|
|
|
|
|
printf("n=%-10d %d seconds\n", n, time(NULL) - nStart); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
printf("stringstream:\n"); |
|
|
|
|
|
|
|
for (int n = 1000; n <= 4500000; n *= 2) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
stringstream ss; |
|
|
|
|
|
|
|
time_t nStart = time(NULL); |
|
|
|
|
|
|
|
for (int i = 0; i < n; i++) |
|
|
|
|
|
|
|
ss.write((char*)&vch[0], vch.size()); |
|
|
|
|
|
|
|
printf("n=%-10d %d seconds\n", n, time(NULL) - nStart); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|