当初、マップはそのままの配置データを RLE圧縮(ランレングス)で保持していました。無圧縮だと 2.8KBですが、この圧縮で 1.7KBには縮んでいたので、これで良いと思っていました。これがすぐにぶっちぎりに甘い見積りだったとすぐに思い知らされる事になります。今回はサイ ...
タグ:最適化
Z80 ループ展開で高速化
諸星圭さん @kmoroboshi からリクエストを頂きましたので、緊急に記事にしてみます。諸星さんが仰るとおり、Z80で処理を高速化するためには、16ビット計算は 8ビットに落とし込めないかという試行を行う事が肝要となります。前回、16bitループカウンタで最高速だった B,C を ...
Z80 スタックに纏わる話
Z80 アセンブラにとって、高速化は命題となります。その中で2バイトをまとめて処理出来る push / pop は使い方によってはかなりの高速化が期待出来るため、本来の使い方以外の使用方法がいくつも開発されてきました。今回はそんなスタック(以下、SP と略す)に纏わるお話で ...
C# 二次元配列の範囲チェック
配列範囲外チェックはどうしていますでしょうか。普通に記述すると… public int[,] array = new int[100, 100]; private bool IsArrayRange(int x, int y) { return true && x >= 0 && y >= 0 ...
C# ループ処理の並列化について
C# では並列化の実装が簡単に出来るようにと、便利な下記のステートメント(クラス)が用意されています。Parallel.For()Parallel.ForEach()Parallel.Invoke()なるほどぉと for や foreach で記述されている箇所を単純に置き換えると、割と高確率で例外で落ちます。これは、 ...