rapidjsontest.cpp (rapidjson-1.0.2) | : | rapidjsontest.cpp (rapidjson-1.1.0) | ||
---|---|---|---|---|
skipping to change at line 48 | skipping to change at line 48 | |||
public: | public: | |||
RapidJson() : temp_(), doc_() {} | RapidJson() : temp_(), doc_() {} | |||
virtual void SetUp() { | virtual void SetUp() { | |||
PerfTest::SetUp(); | PerfTest::SetUp(); | |||
// temp buffer for insitu parsing. | // temp buffer for insitu parsing. | |||
temp_ = (char *)malloc(length_ + 1); | temp_ = (char *)malloc(length_ + 1); | |||
// Parse as a document | // Parse as a document | |||
EXPECT_FALSE(doc_.Parse(json_).IsNull()); | EXPECT_FALSE(doc_.Parse(json_).HasParseError()); | |||
for (size_t i = 0; i < 7; i++) | ||||
EXPECT_FALSE(typesDoc_[i].Parse(types_[i]).HasParseError()); | ||||
} | } | |||
virtual void TearDown() { | virtual void TearDown() { | |||
PerfTest::TearDown(); | PerfTest::TearDown(); | |||
free(temp_); | free(temp_); | |||
} | } | |||
private: | private: | |||
RapidJson(const RapidJson&); | RapidJson(const RapidJson&); | |||
RapidJson& operator=(const RapidJson&); | RapidJson& operator=(const RapidJson&); | |||
protected: | protected: | |||
char *temp_; | char *temp_; | |||
Document doc_; | Document doc_; | |||
Document typesDoc_[7]; | ||||
}; | }; | |||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler)) { | TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
memcpy(temp_, json_, length_ + 1); | memcpy(temp_, json_, length_ + 1); | |||
InsituStringStream s(temp_); | InsituStringStream s(temp_); | |||
BaseReaderHandler<> h; | BaseReaderHandler<> h; | |||
Reader reader; | Reader reader; | |||
EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h)); | EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h)); | |||
} | } | |||
skipping to change at line 94 | skipping to change at line 98 | |||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler)) { | TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
StringStream s(json_); | StringStream s(json_); | |||
BaseReaderHandler<> h; | BaseReaderHandler<> h; | |||
Reader reader; | Reader reader; | |||
EXPECT_TRUE(reader.Parse(s, h)); | EXPECT_TRUE(reader.Parse(s, h)); | |||
} | } | |||
} | } | |||
#define TEST_TYPED(index, Name)\ | ||||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_##Name)) {\ | ||||
for (size_t i = 0; i < kTrialCount * 10; i++) {\ | ||||
StringStream s(types_[index]);\ | ||||
BaseReaderHandler<> h;\ | ||||
Reader reader;\ | ||||
EXPECT_TRUE(reader.Parse(s, h));\ | ||||
}\ | ||||
}\ | ||||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_##Name)) {\ | ||||
for (size_t i = 0; i < kTrialCount * 10; i++) {\ | ||||
memcpy(temp_, types_[index], typesLength_[index] + 1);\ | ||||
InsituStringStream s(temp_);\ | ||||
BaseReaderHandler<> h;\ | ||||
Reader reader;\ | ||||
EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h));\ | ||||
}\ | ||||
} | ||||
TEST_TYPED(0, Booleans) | ||||
TEST_TYPED(1, Floats) | ||||
TEST_TYPED(2, Guids) | ||||
TEST_TYPED(3, Integers) | ||||
TEST_TYPED(4, Mixed) | ||||
TEST_TYPED(5, Nulls) | ||||
TEST_TYPED(6, Paragraphs) | ||||
#undef TEST_TYPED | ||||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FullPrecision)) { | TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FullPrecision)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
StringStream s(json_); | StringStream s(json_); | |||
BaseReaderHandler<> h; | BaseReaderHandler<> h; | |||
Reader reader; | Reader reader; | |||
EXPECT_TRUE(reader.Parse<kParseFullPrecisionFlag>(s, h)); | EXPECT_TRUE(reader.Parse<kParseFullPrecisionFlag>(s, h)); | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterative_DummyHandler)) { | TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterative_DummyHandler)) { | |||
skipping to change at line 157 | skipping to change at line 190 | |||
} | } | |||
TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_MemoryPoolAllocator)) { | TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_MemoryPoolAllocator)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
Document doc; | Document doc; | |||
doc.Parse(json_); | doc.Parse(json_); | |||
ASSERT_TRUE(doc.IsObject()); | ASSERT_TRUE(doc.IsObject()); | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseLength_MemoryPoolAllocator)) { | ||||
for (size_t i = 0; i < kTrialCount; i++) { | ||||
Document doc; | ||||
doc.Parse(json_, length_); | ||||
ASSERT_TRUE(doc.IsObject()); | ||||
} | ||||
} | ||||
#if RAPIDJSON_HAS_STDSTRING | ||||
TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseStdString_MemoryPoolAllocator)) { | ||||
const std::string s(json_, length_); | ||||
for (size_t i = 0; i < kTrialCount; i++) { | ||||
Document doc; | ||||
doc.Parse(s); | ||||
ASSERT_TRUE(doc.IsObject()); | ||||
} | ||||
} | ||||
#endif | ||||
TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterative_MemoryPoolAllocator)) { | TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterative_MemoryPoolAllocator)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
Document doc; | Document doc; | |||
doc.Parse<kParseIterativeFlag>(json_); | doc.Parse<kParseIterativeFlag>(json_); | |||
ASSERT_TRUE(doc.IsObject()); | ASSERT_TRUE(doc.IsObject()); | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_CrtAllocator)) { | TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_CrtAllocator)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
skipping to change at line 253 | skipping to change at line 305 | |||
TEST_F(RapidJson, DocumentAccept) { | TEST_F(RapidJson, DocumentAccept) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
ValueCounter counter; | ValueCounter counter; | |||
doc_.Accept(counter); | doc_.Accept(counter); | |||
EXPECT_EQ(4339u, counter.count_); | EXPECT_EQ(4339u, counter.count_); | |||
} | } | |||
} | } | |||
struct NullStream { | struct NullStream { | |||
typedef char Ch; | ||||
NullStream() /*: length_(0)*/ {} | NullStream() /*: length_(0)*/ {} | |||
void Put(char) { /*++length_;*/ } | void Put(Ch) { /*++length_;*/ } | |||
void Flush() {} | void Flush() {} | |||
//size_t length_; | //size_t length_; | |||
}; | }; | |||
TEST_F(RapidJson, Writer_NullStream) { | TEST_F(RapidJson, Writer_NullStream) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
NullStream s; | NullStream s; | |||
Writer<NullStream> writer(s); | Writer<NullStream> writer(s); | |||
doc_.Accept(writer); | doc_.Accept(writer); | |||
//if (i == 0) | //if (i == 0) | |||
// std::cout << s.length_ << std::endl; | // std::cout << s.length_ << std::endl; | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, Writer_StringBuffer) { | TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer)) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
StringBuffer s(0, 1024 * 1024); | StringBuffer s(0, 1024 * 1024); | |||
Writer<StringBuffer> writer(s); | Writer<StringBuffer> writer(s); | |||
doc_.Accept(writer); | doc_.Accept(writer); | |||
const char* str = s.GetString(); | const char* str = s.GetString(); | |||
(void)str; | (void)str; | |||
//if (i == 0) | //if (i == 0) | |||
// std::cout << strlen(str) << std::endl; | // std::cout << strlen(str) << std::endl; | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, PrettyWriter_StringBuffer) { | #define TEST_TYPED(index, Name)\ | |||
TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer_##Name)) {\ | ||||
for (size_t i = 0; i < kTrialCount * 10; i++) {\ | ||||
StringBuffer s(0, 1024 * 1024);\ | ||||
Writer<StringBuffer> writer(s);\ | ||||
typesDoc_[index].Accept(writer);\ | ||||
const char* str = s.GetString();\ | ||||
(void)str;\ | ||||
}\ | ||||
} | ||||
TEST_TYPED(0, Booleans) | ||||
TEST_TYPED(1, Floats) | ||||
TEST_TYPED(2, Guids) | ||||
TEST_TYPED(3, Integers) | ||||
TEST_TYPED(4, Mixed) | ||||
TEST_TYPED(5, Nulls) | ||||
TEST_TYPED(6, Paragraphs) | ||||
#undef TEST_TYPED | ||||
TEST_F(RapidJson, SIMD_SUFFIX(PrettyWriter_StringBuffer)) { | ||||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
StringBuffer s(0, 2048 * 1024); | StringBuffer s(0, 2048 * 1024); | |||
PrettyWriter<StringBuffer> writer(s); | PrettyWriter<StringBuffer> writer(s); | |||
writer.SetIndent(' ', 1); | writer.SetIndent(' ', 1); | |||
doc_.Accept(writer); | doc_.Accept(writer); | |||
const char* str = s.GetString(); | const char* str = s.GetString(); | |||
(void)str; | (void)str; | |||
//if (i == 0) | //if (i == 0) | |||
// std::cout << strlen(str) << std::endl; | // std::cout << strlen(str) << std::endl; | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, internal_Pow10) { | TEST_F(RapidJson, internal_Pow10) { | |||
double sum = 0; | double sum = 0; | |||
for (size_t i = 0; i < kTrialCount * kTrialCount; i++) | for (size_t i = 0; i < kTrialCount * kTrialCount; i++) | |||
sum += internal::Pow10(int(i & 255)); | sum += internal::Pow10(int(i & 255)); | |||
EXPECT_GT(sum, 0.0); | EXPECT_GT(sum, 0.0); | |||
} | } | |||
TEST_F(RapidJson, SIMD_SUFFIX(Whitespace)) { | TEST_F(RapidJson, SkipWhitespace_Basic) { | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
Document doc; | rapidjson::StringStream s(whitespace_); | |||
ASSERT_TRUE(doc.Parse(whitespace_).IsArray()); | while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek | |||
() == '\t') | ||||
s.Take(); | ||||
ASSERT_EQ('[', s.Peek()); | ||||
} | ||||
} | ||||
TEST_F(RapidJson, SIMD_SUFFIX(SkipWhitespace)) { | ||||
for (size_t i = 0; i < kTrialCount; i++) { | ||||
rapidjson::StringStream s(whitespace_); | ||||
rapidjson::SkipWhitespace(s); | ||||
ASSERT_EQ('[', s.Peek()); | ||||
} | ||||
} | ||||
TEST_F(RapidJson, SkipWhitespace_strspn) { | ||||
for (size_t i = 0; i < kTrialCount; i++) { | ||||
const char* s = whitespace_ + std::strspn(whitespace_, " \t\r\n"); | ||||
ASSERT_EQ('[', *s); | ||||
} | } | |||
} | } | |||
TEST_F(RapidJson, UTF8_Validate) { | TEST_F(RapidJson, UTF8_Validate) { | |||
NullStream os; | NullStream os; | |||
for (size_t i = 0; i < kTrialCount; i++) { | for (size_t i = 0; i < kTrialCount; i++) { | |||
StringStream is(json_); | StringStream is(json_); | |||
bool result = true; | bool result = true; | |||
while (is.Peek() != '\0') | while (is.Peek() != '\0') | |||
skipping to change at line 343 | skipping to change at line 435 | |||
FILE *fp = fopen(filename_, "rb"); | FILE *fp = fopen(filename_, "rb"); | |||
char buffer[65536]; | char buffer[65536]; | |||
FileReadStream s(fp, buffer, sizeof(buffer)); | FileReadStream s(fp, buffer, sizeof(buffer)); | |||
BaseReaderHandler<> h; | BaseReaderHandler<> h; | |||
Reader reader; | Reader reader; | |||
reader.Parse(s, h); | reader.Parse(s, h); | |||
fclose(fp); | fclose(fp); | |||
} | } | |||
} | } | |||
TEST_F(RapidJson, StringBuffer) { | ||||
StringBuffer sb; | ||||
for (int i = 0; i < 32 * 1024 * 1024; i++) | ||||
sb.Put(i & 0x7f); | ||||
} | ||||
#endif // TEST_RAPIDJSON | #endif // TEST_RAPIDJSON | |||
End of changes. 11 change blocks. | ||||
7 lines changed or deleted | 106 lines changed or added |