doroidpanic.com

Cordovaでweb3.jsを使ってkeyStoreの生成を行なうと処理が重くてUIが固まったのでミリ秒で測ってみた。

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の部分を別の暗号化にしてみる。