私は現在、Javascript で GameBoyColor エミュレーターを開発しています。
64k ROM ファイルをメモリ ユニットにロードするには、現在約 60 秒かかります。これは機能です:
loadROM: function (file) {
var reader = new FileReader();
reader.onload = function () {
var start = new Date();
console.log("start", start.getTime());
this.__ROM = new Uint8Array(reader.result.length);
for (var i = 0; i < reader.result.length; i++) {
this.__ROM[i] = (reader.result.charCodeAt(i) & 0xFF);
}
var end = new Date();
console.log("end", end.getTime());
console.log((end.getTime() - start.getTime()) + " for " + i + " iterations");
this._trigger("onROMLoaded");
}.context(this);
reader.readAsBinaryString(file);
}
reader.result
文字列としてのROMファイルthis.__rom
で、配列です。重要なのは、すべての文字を取得してメモリの ROM 配列にプッシュする for ループです。
これには時間がかかります。問題は、これをスピードアップする方法です。文字列を配列に変換するためのより良い方法はありますか?