Skip to content

Commit

Permalink
Build android shootout version with CMake
Browse files Browse the repository at this point in the history
  • Loading branch information
vivkin committed Oct 4, 2014
1 parent 9b5cf6f commit e6c317e
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 120 deletions.
12 changes: 8 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
.DS_Store
*.swp
build
debug
release
test
vjson
build-debug
build-release
ruberoid/bin
ruberoid/libs
ruberoid/build.xml
ruberoid/local.properties
ruberoid/proguard-project.txt
ruberoid/project.properties
sajson
rapidjson
shootout
21 changes: 12 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
cmake_minimum_required(VERSION 2.8.12)
project(gason)

option(SHOOTOUT "Build parser-shootout" OFF)

add_compile_options(-O3 -std=c++11 -fno-rtti -fno-exceptions -Wall -Wextra)

add_executable(gasonpp src/gason.cpp src/pretty-print.cpp)
add_executable(test-suite src/gason.cpp src/test-suite.cpp)
if(SHOOTOUT)
add_executable(parser-shootout src/parser-shootout.cpp
src/gason.cpp
vjson/block_allocator.cpp
vjson/json.cpp)
if(ANDROID)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/ruberoid/libs/${ANDROID_ABI})
include_directories(${ANDROID_NDK}/sources/android/native_app_glue)
link_libraries(android log)
add_library(parser-shootout SHARED src/parser-shootout.cpp src/gason.cpp ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
else()
add_executable(gasonpp src/gason.cpp src/pretty-print.cpp)
add_executable(test-suite src/gason.cpp src/test-suite.cpp)
option(SHOOTOUT "Build parser-shootout" OFF)
if(SHOOTOUT)
add_executable(parser-shootout src/parser-shootout.cpp src/gason.cpp)
endif()
endif()
2 changes: 1 addition & 1 deletion ruberoid/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
android:configChanges="orientation|keyboardHidden">
<!-- Tell NativeActivity the name of or .so -->
<meta-data android:name="android.app.lib_name"
android:value="native-activity" />
android:value="parser-shootout" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down
15 changes: 0 additions & 15 deletions ruberoid/jni/Android.mk

This file was deleted.

6 changes: 0 additions & 6 deletions ruberoid/jni/Application.mk

This file was deleted.

37 changes: 0 additions & 37 deletions ruberoid/jni/main.cpp

This file was deleted.

2 changes: 1 addition & 1 deletion ruberoid/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">NativeActivity</string>
<string name="app_name">Json Parser Shootout</string>
</resources>
87 changes: 40 additions & 47 deletions src/parser-shootout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
#include <sys/time.h>
#ifdef ANDROID
#include <android/log.h>
#include <android_native_app_glue.h>
#define LOG(...) __android_log_print(ANDROID_LOG_INFO, "ruberoid", __VA_ARGS__)
#else
#define LOG(...) fprintf(stderr, __VA_ARGS__)
#endif
#include "gason.h"
#include "vjson/json.h"
#include "sajson/include/sajson.h"
#include "rapidjson/include/rapidjson/document.h"
#include "../sajson/include/sajson.h"
#include "../rapidjson/include/rapidjson/document.h"

double traverse_gason(JsonValue o) {
double x = 0;
Expand All @@ -31,27 +31,6 @@ double traverse_gason(JsonValue o) {
return x;
}

double traverse_vjson(json_value *value) {
double x = 0;
switch (value->type) {
case JSON_FLOAT:
x += value->float_value;
break;
case JSON_INT:
x += value->int_value;
break;
case JSON_ARRAY:
case JSON_OBJECT:
for (json_value *it = value->first_child; it; it = it->next_sibling) {
x += traverse_vjson(it);
}
break;
default:
return 0;
}
return x;
}

double traverse_sajson(const sajson::value &v) {
double x = 0;
switch (v.get_type()) {
Expand Down Expand Up @@ -99,7 +78,7 @@ unsigned long long now() {
return tv.tv_sec * 1000000ull + tv.tv_usec;
}

int main(int argc, char **argv) {
int main(int argc, const char **argv) {
for (int i = 1; i < argc; ++i) {
const char *filename = argv[i];
FILE *fp = fopen(filename, "rb");
Expand Down Expand Up @@ -139,28 +118,6 @@ int main(int argc, char **argv) {
free(source);
}

// vjson
{
char *source = strdup(buffer);

char *errorPos = 0;
const char *errorDesc = 0;
int errorLine = 0;
block_allocator allocator(4096);
t = now();
json_value *root = json_parse(source, &errorPos, &errorDesc, &errorLine, &allocator);
auto parse_time = now() - t;
if (!root) {
LOG("error: vjson: %s\n", errorDesc);
}
t = now();
double x = traverse_vjson(root);
auto traverse_time = now() - t;
LOG("%10s %10lluus %10lluus \t(%f)\n", "vjson", parse_time, traverse_time, x);

free(source);
}

// sajson
{
char *source = strdup(buffer);
Expand Down Expand Up @@ -199,3 +156,39 @@ int main(int argc, char **argv) {
}
return 0;
}

#ifdef ANDROID
void android_main(android_app *state)
{
app_dummy();

const char *argv[] =
{
"",
"/sdcard/Download/shootout/big.json",
"/sdcard/Download/shootout/data.json",
"/sdcard/Download/shootout/monster.json",
};
main(sizeof(argv) / sizeof(argv[1]), argv);

while (1)
{
// Read all pending events.
int ident;
int events;
struct android_poll_source* source;
while ((ident = ALooper_pollAll(-1, NULL, &events, (void **)&source)) >= 0)
{
if (source != NULL)
{
source->process(state, source);
}

if (state->destroyRequested != 0)
{
return;
}
}
}
}
#endif

0 comments on commit e6c317e

Please sign in to comment.