perftest.h (rapidjson-1.0.2) | : | perftest.h (rapidjson-1.1.0) | ||
---|---|---|---|---|
skipping to change at line 33 | skipping to change at line 33 | |||
(((x)*100000) + ((y)*100) + (z)) | (((x)*100000) + ((y)*100) + (z)) | |||
// __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler. | // __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler. | |||
// We use -march=native with gmake to enable -msse2 and -msse4.2, if supported. | // We use -march=native with gmake to enable -msse2 and -msse4.2, if supported. | |||
#if defined(__SSE4_2__) | #if defined(__SSE4_2__) | |||
# define RAPIDJSON_SSE42 | # define RAPIDJSON_SSE42 | |||
#elif defined(__SSE2__) | #elif defined(__SSE2__) | |||
# define RAPIDJSON_SSE2 | # define RAPIDJSON_SSE2 | |||
#endif | #endif | |||
#define RAPIDJSON_HAS_STDSTRING 1 | ||||
//////////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////////// | |||
// Google Test | // Google Test | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
// gtest indirectly included inttypes.h, without __STDC_CONSTANT_MACROS. | // gtest indirectly included inttypes.h, without __STDC_CONSTANT_MACROS. | |||
#ifndef __STDC_CONSTANT_MACROS | #ifndef __STDC_CONSTANT_MACROS | |||
# define __STDC_CONSTANT_MACROS 1 // required by C++ standard | # define __STDC_CONSTANT_MACROS 1 // required by C++ standard | |||
#endif | #endif | |||
skipping to change at line 68 | skipping to change at line 70 | |||
#include <crtdbg.h> | #include <crtdbg.h> | |||
#pragma warning(disable : 4996) // 'function': was declared deprecated | #pragma warning(disable : 4996) // 'function': was declared deprecated | |||
#endif | #endif | |||
//! Base class for all performance tests | //! Base class for all performance tests | |||
class PerfTest : public ::testing::Test { | class PerfTest : public ::testing::Test { | |||
public: | public: | |||
PerfTest() : filename_(), json_(), length_(), whitespace_(), whitespace_leng th_() {} | PerfTest() : filename_(), json_(), length_(), whitespace_(), whitespace_leng th_() {} | |||
virtual void SetUp() { | virtual void SetUp() { | |||
{ | ||||
const char *paths[] = { | const char *paths[] = { | |||
"data/sample.json", | "data/sample.json", | |||
"bin/data/sample.json", | "bin/data/sample.json", | |||
"../bin/data/sample.json", | "../bin/data/sample.json", | |||
"../../bin/data/sample.json", | "../../bin/data/sample.json", | |||
"../../../bin/data/sample.json" | "../../../bin/data/sample.json" | |||
}; | }; | |||
FILE *fp = 0; | ||||
for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { | FILE *fp = 0; | |||
fp = fopen(filename_ = paths[i], "rb"); | for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { | |||
if (fp) | fp = fopen(filename_ = paths[i], "rb"); | |||
break; | if (fp) | |||
break; | ||||
} | ||||
ASSERT_TRUE(fp != 0); | ||||
fseek(fp, 0, SEEK_END); | ||||
length_ = (size_t)ftell(fp); | ||||
fseek(fp, 0, SEEK_SET); | ||||
json_ = (char*)malloc(length_ + 1); | ||||
ASSERT_EQ(length_, fread(json_, 1, length_, fp)); | ||||
json_[length_] = '\0'; | ||||
fclose(fp); | ||||
} | } | |||
ASSERT_TRUE(fp != 0); | ||||
fseek(fp, 0, SEEK_END); | ||||
length_ = (size_t)ftell(fp); | ||||
fseek(fp, 0, SEEK_SET); | ||||
json_ = (char*)malloc(length_ + 1); | ||||
ASSERT_EQ(length_, fread(json_, 1, length_, fp)); | ||||
json_[length_] = '\0'; | ||||
fclose(fp); | ||||
// whitespace test | // whitespace test | |||
whitespace_length_ = 1024 * 1024; | { | |||
whitespace_ = (char *)malloc(whitespace_length_ + 4); | whitespace_length_ = 1024 * 1024; | |||
char *p = whitespace_; | whitespace_ = (char *)malloc(whitespace_length_ + 4); | |||
for (size_t i = 0; i < whitespace_length_; i += 4) { | char *p = whitespace_; | |||
*p++ = ' '; | for (size_t i = 0; i < whitespace_length_; i += 4) { | |||
*p++ = '\n'; | *p++ = ' '; | |||
*p++ = '\r'; | *p++ = '\n'; | |||
*p++ = '\t'; | *p++ = '\r'; | |||
*p++ = '\t'; | ||||
} | ||||
*p++ = '['; | ||||
*p++ = '0'; | ||||
*p++ = ']'; | ||||
*p++ = '\0'; | ||||
} | ||||
// types test | ||||
{ | ||||
const char *typespaths[] = { | ||||
"data/types", | ||||
"bin/types", | ||||
"../bin/types", | ||||
"../../bin/types/", | ||||
"../../../bin/types" | ||||
}; | ||||
const char* typesfilenames[] = { | ||||
"booleans.json", | ||||
"floats.json", | ||||
"guids.json", | ||||
"integers.json", | ||||
"mixed.json", | ||||
"nulls.json", | ||||
"paragraphs.json" | ||||
}; | ||||
for (size_t j = 0; j < sizeof(typesfilenames) / sizeof(typesfilename | ||||
s[0]); j++) { | ||||
types_[j] = 0; | ||||
for (size_t i = 0; i < sizeof(typespaths) / sizeof(typespaths[0] | ||||
); i++) { | ||||
char filename[256]; | ||||
sprintf(filename, "%s/%s", typespaths[i], typesfilenames[j]) | ||||
; | ||||
if (FILE* fp = fopen(filename, "rb")) { | ||||
fseek(fp, 0, SEEK_END); | ||||
typesLength_[j] = (size_t)ftell(fp); | ||||
fseek(fp, 0, SEEK_SET); | ||||
types_[j] = (char*)malloc(typesLength_[j] + 1); | ||||
ASSERT_EQ(typesLength_[j], fread(types_[j], 1, typesLeng | ||||
th_[j], fp)); | ||||
types_[j][typesLength_[j]] = '\0'; | ||||
fclose(fp); | ||||
break; | ||||
} | ||||
} | ||||
} | ||||
} | } | |||
*p++ = '['; | ||||
*p++ = '0'; | ||||
*p++ = ']'; | ||||
*p++ = '\0'; | ||||
} | } | |||
virtual void TearDown() { | virtual void TearDown() { | |||
free(json_); | free(json_); | |||
free(whitespace_); | free(whitespace_); | |||
json_ = 0; | json_ = 0; | |||
whitespace_ = 0; | whitespace_ = 0; | |||
for (size_t i = 0; i < 7; i++) { | ||||
free(types_[i]); | ||||
types_[i] = 0; | ||||
} | ||||
} | } | |||
private: | private: | |||
PerfTest(const PerfTest&); | PerfTest(const PerfTest&); | |||
PerfTest& operator=(const PerfTest&); | PerfTest& operator=(const PerfTest&); | |||
protected: | protected: | |||
const char* filename_; | const char* filename_; | |||
char *json_; | char *json_; | |||
size_t length_; | size_t length_; | |||
char *whitespace_; | char *whitespace_; | |||
size_t whitespace_length_; | size_t whitespace_length_; | |||
char *types_[7]; | ||||
size_t typesLength_[7]; | ||||
static const size_t kTrialCount = 1000; | static const size_t kTrialCount = 1000; | |||
}; | }; | |||
#endif // __cplusplus | #endif // __cplusplus | |||
#endif // PERFTEST_H_ | #endif // PERFTEST_H_ | |||
End of changes. 7 change blocks. | ||||
34 lines changed or deleted | 89 lines changed or added |