他のアプリのアイコンは光沢が入ってない。
調べてみたら、iOS5からオプションが増えたらしい。
これで「gloss effect」が消える。
$ sudo port install swig $ sudo port install swig-java $ sudo port install cmake「swig」と「swig-java」のactiveバージョンが合わないとエラーになるので、
$ cd opencv/android $ mkdir build $ cd build $ cmake .. $ make
$ cd opencv/android/android-jni $ make実行後、生成された「local.env.mk」ファイルの
#Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := OpenCVUtil LOCAL_SRC_FILES := babukuma_opencv_util.c LOCAL_LDLIBS := -lm -llog #define OPENCV_INCLUDES and OPENCV_LIBS PATH_TO_OPENCV_ANDROID_BUILD := ~/dev/OpenCV-2.2.0/android/build include $(PATH_TO_OPENCV_ANDROID_BUILD)/android-opencv.mk LOCAL_LDLIBS += $(OPENCV_LIBS) LOCAL_C_INCLUDES += $(OPENCV_INCLUDES) include $(BUILD_SHARED_LIBRARY)これなら問題なく「ndk-build」でビルドされる。
/** * OpenCVUtil.java */ package com.babukuma.android.demo.opencv.jni; /** * @author babukuma * */ public final class OpenCVUtil { static { System.loadLibrary("OpenCVUtil"); } /** * エッジ効果。 * * @param picData * RGBのピクセルデータ * @param width * 画像のWidth * @param height * 画像のHeight */ public static native void edge(int[] picData, int width, int height); }
/** * EdgeActivity.java */ package com.babukuma.android.demo.opencv.activity; import static com.babukuma.android.demo.opencv.Main.LOG_TAG; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import com.babukuma.android.demo.opencv.R; import com.babukuma.android.demo.opencv.jni.OpenCVUtil; /** * エッジ効果テスト用Activity * * @author babukuma */ public class EdgeActivity extends Activity { private ImageView picView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(LOG_TAG, "EdgeActivity#onCreate"); setContentView(R.layout.edge); picView = (ImageView) findViewById(R.id.picView); picView.setOnClickListener(new OnClickListener() { public void onClick(View v) { Log.d(LOG_TAG, "picView#1onClick"); BitmapDrawable db = (BitmapDrawable) picView.getDrawable(); Bitmap bitmap = db.getBitmap(); // Bitmap.Config.ARGB_8888 Bitmap copyBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); int width = copyBitmap.getWidth(); int height = copyBitmap.getHeight(); int[] pixels = new int[width * height]; copyBitmap.getPixels(pixels, 0, width, 0, 0, width, height); Log.d(LOG_TAG, "OpenCVUtil#edge"); OpenCVUtil.edge(pixels, width, height); Log.d(LOG_TAG, "finish OpenCVUtil#edge"); copyBitmap.setPixels(pixels, 0, width, 0, 0, width, height); picView.setImageBitmap(copyBitmap); } }); } }
/* * babukuma_opencv_util.h */ /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_babukuma_android_demo_opencv_jni_OpenCVUtil */ #ifndef _Included_com_babukuma_android_demo_opencv_jni_OpenCVUtil #define _Included_com_babukuma_android_demo_opencv_jni_OpenCVUtil #ifdef __cplusplus extern "C" { #endif /* * Class: com_babukuma_android_demo_opencv_jni_OpenCVUtil * Method: edge * Signature: ([III)V */ JNIEXPORT void JNICALL Java_com_babukuma_android_demo_opencv_jni_OpenCVUtil_edge (JNIEnv *, jclass, jintArray, jint, jint); #ifdef __cplusplus } #endif #endif
/* * babukuma_opencv_util.c */ #include <stdio.h> // JNI #include<jni.h> // Android #include <android/log.h> // OpenCV #include <opencv/cv.h> #include "babukuma_opencv_util.h" // Android LOG #define LOG_TAG "OpenCVDemo" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 関数定義 IplImage* pixels2IplImage(int* pixels, int width, int height); void iplImage2Pixcels(int *pixcels, IplImage *srcImage); /* * エッジ効果。 * 「picData」データは必ず「ARGB」 * * Class: com_babukuma_android_demo_opencv_jni_OpenCVUtil * Method: edge * Signature: ([III)V */ JNIEXPORT void JNICALL Java_com_babukuma_android_demo_opencv_jni_OpenCVUtil_edge (JNIEnv *env, jclass class, jintArray picData, jint width, jint height) { LOGD("call Java_com_babukuma_android_demo_opencv_jni_OpenCVUtil_edge"); jboolean isCopy; //Colorの配列を取り出す(配列のポインタを取得) jint* picDataPtr = (*env)->GetIntArrayElements(env, picData, &isCopy); //Color(int) の配列から、IplImageを作る LOGD("call pixels2IplImage"); IplImage *srcImage = pixels2IplImage(picDataPtr, width, height); //画像の作成完了。 LOGD("CV_BGR2GRAY"); IplImage *wordImage=cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_8U,1); cvCvtColor(srcImage, wordImage, CV_BGR2GRAY); LOGD("cvReleaseImage srcImage"); cvReleaseImage(&srcImage); srcImage = NULL; // Detect edge LOGD("Detect edge"); IplImage *wordImage2 = cvCreateImage(cvGetSize(wordImage), IPL_DEPTH_8U, 1); cvCanny(wordImage, wordImage2, 64, 128, 3); cvReleaseImage(&wordImage); LOGD("cvReleaseImage wordImage"); cvReleaseImage(&wordImage); wordImage = NULL; // Convert black and whilte to 24bit image then convert to UIImage to show IplImage *edgedImage = cvCreateImage(cvGetSize(wordImage2), IPL_DEPTH_8U, 3); int y, x; for(y=0; y<wordImage2->height; y++) { for(x=0; x<wordImage2->width; x++) { char *p = edgedImage->imageData + y * edgedImage->widthStep + x * 3; *p = *(p+1) = *(p+2) = wordImage2->imageData[y * wordImage2->widthStep + x]; } } LOGD("cvReleaseImage wordImage2"); cvReleaseImage(&wordImage2); wordImage2 = NULL; //IplImageの値を、int配列に戻す LOGD("call iplImage2Pixcels"); iplImage2Pixcels(picDataPtr, edgedImage); LOGD("cvReleaseImage edgedImage"); cvReleaseImage(&edgedImage); edgedImage = NULL; (*env)->ReleaseIntArrayElements(env, picData, picDataPtr, 0); } // jint配列からIplImageを作成 // alphaは捨てる。 IplImage* pixels2IplImage(int *pixels, int width, int height) { int x, y, index; IplImage *img = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); unsigned char* base = (unsigned char*) (img->imageData); unsigned char* ptr; for (y = 0; y < height; y++) { ptr = base + y * img->widthStep; for (x = 0; x < width; x++) { index = x + y * width; // B ptr[3 * x] = pixels[index] & 0xFF; // G ptr[3 * x + 1] = pixels[index] >> 8 & 0xFF; // R ptr[3 * x + 2] = pixels[index] >> 16 & 0xFF; // A // pixels[index] >> 24 & 0xFF; } } return img; } // IplImageからjint配列作成 void iplImage2Pixcels(int *pixcels, IplImage *srcImage) { int x, y; int w,h; w=srcImage->width; h=srcImage->height; unsigned char* base = (unsigned char*) (srcImage->imageData); unsigned char* ptr; for (y = 0; y < h; y++) { ptr = base + y * srcImage->widthStep; for (x = 0; x < w; x++) { pixcels[x + y * w] = (0xFF000000) | // A (ptr[3 * x + 2] << 16) | // R (ptr[3 * x + 1] << 8) | // G (ptr[3 * x]); // B } } }
From Evernote: |
OpenCV2.2をインストールした。 |
#include <stdio.h> #include <opencv/cv.h> #include <opencv/highgui.h> int main (intargc, constchar * argv[]) { char* szWndName="カメラ映像"; CvCapture* capture; IplImage* img; capture = cvCaptureFromCAM(0); // カメラ映像取得 if (capture==NULL) { fprintf(stderr, "カメラが見つかりません。\n"); return -1; } cvNamedWindow(szWndName, CV_WINDOW_AUTOSIZE); while (1) { img=cvQueryFrame(capture); // フレーム取得 cvShowImage(szWndName, img); // フレーム表示 if(cvWaitKey(1)>=0) { // 何かキーを押したら終了 break; } } cvDestroyWindow(szWndName); cvReleaseCapture(&capture); return0; } |
From Evernote: |
Linuxにffmpegをインストール |
LAME | 3.98.4 | http://lame.sourceforge.net/ | MP3への変換ライブラリ |
FAAC / FAAD2 | 1.28 / 2.7 | http://www.audiocoding.com/ | MPEG2-AAC, MPEG4-AAC 音声圧縮ライブラリ |
opencore-amr | 0.1.2 | http://opencore-amr.sourceforge.net/ | 3G携帯用音声コーデック |
ffmpeg | 0.6.1 | http://www.ffmpeg.org/ |
Log.isLoggable(TAG, Log.VERBOSE) == false
Log.isLoggable(TAG, Log.DEBUG) == false
Log.isLoggable(TAG, Log.INFO) == true
Log.isLoggable(TAG, Log.WARN) == true
Log.isLoggable(TAG, Log.ERROR) == true
Log.d(TAG, msg); // ログレベルとは関係なく出力はされる。
if(Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, msg); // ログレベルが「DEBUG」以上の場合、出力はされる。
}
$ ./adb shell setprop log.tag.<your_log_tag> <level>
$ ./adb shell stop
$ ./adb shell setprop log.tag.BABUKUMA DEBUG
$ ./adb shell start
Log.isLoggable(TAG, Log.VERBOSE) == false
Log.isLoggable(TAG, Log.DEBUG) == true
Log.isLoggable(TAG, Log.INFO) == true
Log.isLoggable(TAG, Log.WARN) == true
Log.isLoggable(TAG, Log.ERROR) == true
// リンクをクリック時、Safariを起動する為の処理
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSLog(@"URL = %@", [[request URL] absoluteString]);
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
//
// WebViewTestAppDelegate.h
// WebViewTest
//
// Created by BABUKUMA on 10/08/30.
// Copyright babukuma.com 2010. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface WebViewTestAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
IBOutlet UIWebView *webView;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
//
// WebViewTestAppDelegate.m
// WebViewTest
//
// Created by BABUKUMA on 10/08/30.
// Copyright babukuma.com 2010. All rights reserved.
//
#import "WebViewTestAppDelegate.h"
@implementation WebViewTestAppDelegate
@synthesize window;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[window makeKeyAndVisible];
// WebViewの初期表示
NSLog(@"BABUKUMA : WebViewの初期表示");
NSURL *url = [NSURL URLWithString:@"http://babukuma.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest: request];
return YES;
}
// リンクをクリック時、Safariを起動する為の処理
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSLog(@"URL = %@", [[request URL] absoluteString]);
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
- (void)applicationWillTerminate:(UIApplication *)application {
}
#pragma mark -
#pragma mark Memory management
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
mvn archetype:create -DgroupId=com.babukuma -DartifactId=Scala.Web -DarchetypeArtifactId=maven-archetype-webapp
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.babukuma</groupId>
<artifactId>Scala.Web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Scala.Web Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdkVersion>1.6</jdkVersion>
<junitVersion>4.8.1</junitVersion>
<scalaVersion>2.8.0.RC7</scalaVersion>
<scalaPluginVersion>2.12</scalaPluginVersion>
</properties>
<repositories>
<repository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_2.5_spec</artifactId>
<version>1.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scalaVersion}</version>
</dependency>
</dependencies>
<build>
<finalName>Scala.Web</finalName>
<!-- To define the plugin version in your parent POM -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdkVersion}</source>
<target>${jdkVersion}</target>
</configuration>
</plugin>
<!-- To use the plugin goals in your POM or parent POM -->
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xms64m</jvmArg>
<jvmArg>-Xmx1024m</jvmArg>
</jvmArgs>
</configuration>
</plugin>
</plugins>
</build>
<!-- To use the report goals in your POM or parent POM -->
<reporting>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
</plugin>
</plugins>
</reporting>
</project>
package com.babukuma
import javax.servlet.http._
class HelloScalaServlet extends HttpServlet {
override def doGet(request : HttpServletRequest, response : HttpServletResponse) =
response.getWriter().print("Hello Scala")
}
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Scala Web Application</display-name>
<servlet>
<servlet-name>helloScala</servlet-name>
<servlet-class>com.babukuma.HelloScalaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloScala</servlet-name>
<url-pattern>/helloScala</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.babukuma</groupId>
<artifactId>scala.test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>scala.test</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junitVersion>4.8.1</junitVersion>
<scalaVersion>2.8.0.RC7</scalaVersion>
<scalaPluginVersion>2.12</scalaPluginVersion>
</properties>
<repositories>
<repository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scalaVersion}</version>
</dependency>
</dependencies>
<build>
<!--
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
-->
<!-- To define the plugin version in your parent POM -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- To use the plugin goals in your POM or parent POM -->
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xms64m</jvmArg>
<jvmArg>-Xmx1024m</jvmArg>
</jvmArgs>
</configuration>
</plugin>
</plugins>
</build>
<!-- To use the report goals in your POM or parent POM -->
<reporting>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>${scalaPluginVersion}</version>
</plugin>
</plugins>
</reporting>
</project>
package com.babukuma.scala
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello Scala!")
val helloJava = new HelloJava
helloJava.printHelloJava()
}
}
package com.babukuma.scala;
public class HelloJava {
public void printHelloJava() {
System.out.println("Hello Java!");
}
}
$ mvn compile
$ mvn package
実行
$ mvn scala:run -DmainClass=com.babukuma.scala.HelloScala
Hello Scala!
Hello Java!
区分 | SQLite | H2 Embedded | H2 In-memory |
---|---|---|---|
Insert (100万件) | 0.5 秒 | 0.9 秒 | 0.9 秒 |
Select (100万件) | 0.002 秒 | 0.015 秒 | 0.07 秒 |
File size | 2,048 bytes | 14,336 bytes | - |
区分 | SQLite | H2 Embedded | H2 In-memory |
---|---|---|---|
Insert (100万件) | 0.5 秒 | 1.3 秒 | 1.5 秒 |
Select (100万件) | 0.004 秒 | 0.09 秒 | 0.095 秒 |
File size | 2,048 bytes | 14,336 bytes | - |
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class SqlitePerformance {
private static final int ROW_COUNT = 1000000;
private static final int MAX = 100;
/**
* SQLite3 Embedded
*
* @author babukuma
* @since 2010/04/09
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println("SQLite TEST [" + ROW_COUNT + "件]");
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager
.getConnection("jdbc:sqlite:babukuma.sqllite.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists babukuma;");
stat
.executeUpdate("create table babukuma (id integer primary key, value integer);");
conn.setAutoCommit(false);
System.out.print("Insert Test : ");
long startTime = System.currentTimeMillis();
PreparedStatement prep = conn
.prepareStatement("insert into babukuma values (?, ?);");
for (int i = 0; i < ROW_COUNT; i++) {
prep.setInt(1, i);
prep.setInt(2, i);
prep.addBatch();
if (i > 0 && (i % MAX) == 0 && i == ROW_COUNT - 1) {
prep.executeBatch();
prep.clearBatch();
}
}
conn.commit();
long endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
System.out.print("Select Test : ");
startTime = System.currentTimeMillis();
ResultSet rs = stat.executeQuery("select * from babukuma;");
while (rs.next()) {
rs.getInt("id");
rs.getInt("value");
// System.out.println("id = " + rs.getInt("id"));
// System.out.println("value = " + rs.getString("value"));
}
rs.close();
endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
conn.close();
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import org.h2.jdbcx.JdbcConnectionPool;
public class H2Performance {
private static final int ROW_COUNT = 1000000;
private static final int MAX = 100;
/**
* H2 Embedded
*
* @author babukuma
* @since 2010/04/09
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println("H2 TEST [" + ROW_COUNT + "件]");
JdbcConnectionPool cp = JdbcConnectionPool.create(
"jdbc:h2:babukuma.h2", "", "");
Connection conn = cp.getConnection();
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists babukuma;");
stat
.executeUpdate("create table babukuma (id int primary key, value int);");
conn.setAutoCommit(false);
System.out.print("Insert Test : ");
long startTime = System.currentTimeMillis();
PreparedStatement prep = conn
.prepareStatement("insert into babukuma values (?, ?);");
for (int i = 0; i < ROW_COUNT; i++) {
prep.setInt(1, i);
prep.setInt(2, i);
prep.addBatch();
if (i > 0 && (i % MAX) == 0 && i == ROW_COUNT - 1) {
prep.executeBatch();
prep.clearBatch();
}
}
conn.commit();
long endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
System.out.print("Select Test : ");
startTime = System.currentTimeMillis();
ResultSet rs = stat.executeQuery("select * from babukuma;");
while (rs.next()) {
rs.getInt("id");
rs.getInt("value");
// System.out.println("id = " + rs.getInt("id"));
// System.out.println("value = " + rs.getString("value"));
}
rs.close();
endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
conn.close();
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import org.h2.jdbcx.JdbcConnectionPool;
public class H2InMemoryPerformance {
private static final int ROW_COUNT = 1000000;
private static final int MAX = 100;
/**
* H2 In memory
*
* @author babukuma
* @since 2010/04/09
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println("H2 In Memory TEST [" + ROW_COUNT + "件]");
JdbcConnectionPool cp = JdbcConnectionPool
.create("jdbc:h2:mem:", "", "");
Connection conn = cp.getConnection();
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists babukuma;");
stat
.executeUpdate("create table babukuma (id int primary key, value int);");
conn.setAutoCommit(false);
System.out.print("Insert Test : ");
long startTime = System.currentTimeMillis();
PreparedStatement prep = conn
.prepareStatement("insert into babukuma values (?, ?);");
for (int i = 0; i < ROW_COUNT; i++) {
prep.setInt(1, i);
prep.setInt(2, i);
prep.addBatch();
if (i > 0 && (i % MAX) == 0 && i == ROW_COUNT - 1) {
prep.executeBatch();
prep.clearBatch();
}
}
conn.commit();
long endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
System.out.print("Select Test : ");
startTime = System.currentTimeMillis();
ResultSet rs = stat.executeQuery("select * from babukuma;");
while (rs.next()) {
rs.getInt("id");
rs.getInt("value");
// System.out.println("id = " + rs.getInt("id"));
// System.out.println("value = " + rs.getString("value"));
}
rs.close();
endTime = System.currentTimeMillis();
System.out.println(((endTime - startTime) / 1000.) + "秒");
conn.close();
}
}
# Application.mk
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := jnitest
package com.babukuma.android.test.jni;
import android.app.Activity;
import android.os.Bundle;
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public native String helloJNI();
public native int add(int a, int b);
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include<jni.h>
/* Header for class com_babukuma_android_test_jni_Main */
#ifndef _Included_com_babukuma_android_test_jni_Main
#define _Included_com_babukuma_android_test_jni_Main
#ifdef __cplusplus
extern"C" {
#endif
/*
* Class: com_babukuma_android_test_jni_Main
* Method: helloJNI
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_babukuma_android_test_jni_Main_helloJNI
(JNIEnv *, jobject);
/*
* Class: com_babukuma_android_test_jni_Main
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_babukuma_android_test_jni_Main_add
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
#include<jni.h>
#include"jnitest.h"
JNIEXPORT jstring JNICALL Java_com_babukuma_android_test_jni_Main_helloJNI(
JNIEnv *env, jobject thisObj) {
jstring result = (*env)->NewStringUTF(env, "Hello JNI !");
return result;
}
JNIEXPORT jint JNICALL Java_com_babukuma_android_test_jni_Main_add(JNIEnv *env,
jobject thisObj, jint a, jint b) {
jint result = a + b;
return result;
}
# Android.mkLOCAL_PATH := $(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE := jnitest
LOCAL_SRC_FILES := jnitest.c
include$(BUILD_SHARED_LIBRARY)
package com.babukuma.android.test.jni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Main extends Activity {
static {
System.loadLibrary("jnitest");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// call helloJNI()
TextView result1 = (TextView) findViewById(R.id.text_result_1);
result1.setText(helloJNI());
// call add(1, 2)
TextView result2 = (TextView) findViewById(R.id.text_result_2);
result2.setText("1 + 2 = " + add(1, 2));
}
public native String helloJNI();
public native int add(int a, int b);
}