Cordovaでweb3.jsを使ってアカウント生成から、keyStoreの生成まで行なうと処理が重くてUIが固まったのでミリ秒で測ってみた。
self.prevPointTime = null;
self.log = [];
self.bench = function( message , obj ){
console.log( message , obj );
if( !self.prevPointTime ){
self.prevPointTime = new Date();
}
self.log.push( { message : message , time: ( new Date().getTime() ) - self.prevPointTime.getTime() } );
self.prevPointTime = new Date();
}
//アカウント生成
self.bench( "web3 -> start create" , null );
var account = self.web3.eth.accounts.create();
self.bench( "web3 -> end create" , account );
//キーストア生成
self.bench( "web3 -> start encrypt" , null );
var key = self.web3.eth.accounts.encrypt( account.privateKey , password );
self.bench( "web3 -> end encrypt" , key );
console.log( self.log );
1: {message: "web3 -> start create", time: 0}
2: {message: "web3 -> end create", time: 51}
3: {message: "web3 -> start encrypt", time: 0}
4: {message: "web3 -> end encrypt", time: 1829} < -- 1800ミリ秒は重いな。。
ChromeでもCordovaでも差はなくただただencryptが重い。
setTimeoutにしても結局シングルスレッドだし、keyStore形式の必要はないので
encryptの部分を別の暗号化にしてみる。