Ver.18系の話
Ver.18系のバージョンアップの注意事項
いくつか設定削減はありますが、更新履歴を参照という程度です。
そのため、今回は専用ページがありません。
なおメジャーバージョンアップにつき、全ビルドかけてますのでウィルススキャンソフトによる誤認識があるものとお考えください。
ダウンロード
Ver.17.9.9.21ダウンロード
VIRUSTOTALによるチェック結果
いつものCRDFがリリース直後に誤検出されています。
Defenderに関してはこちらで検体提出します。
開発時の履歴
Ver.17.9.9.21
●選択状態などの内部データ化
・マウス操作やキー操作から選択/フォーカス/ドロップハイライト状態を取得する仕組みを追加
・Shift押下時のキー操作から選択状態を取得する仕組みを追加
・リスト項目の状態をセット/取得するAPIのラッパーを追加
・カーソル移動による全解除イベント生成用の補完処理を追加
・複数の属性の全選択/全解除の走査ループを1回で行い、抽出条件をラムダ式で指定する関数の追加
●省メモリ化(データ構造の見直し)
a.リスト上の個々のアイテム
・親クラスのポインタを削除してアイテム1個あたり8バイト削減
・親クラス管理を上位クラスに委譲し、コールバック関数へはコンストラクタ引数で渡す仕組みを実装
・ファイルの拡張子のテキストをwchar_t*→shortに変更して1個あたり3バイト削減
・上記の参照ヶ所の補完処理を大量に実装
※拡張子優先系のソートの性能は2〜4%くらい劣化したが、少し前の改修で110〜160%の向上をしているので許容範囲と判断
・桁削減に伴いメモリアライメントの並び順を調整(合計16バイト削減)
b.リスト
・1個当たり、BOOL→boolで14バイト削減
・不要変数の削除で4バイト削減
c.復元用選択状態リスト
・ステータスをUINTからshortで2バイト削減
●CMapの利用の削減
・画面分割比較の際の同名ファイルの走査のハッシュをunordered_mapに変更、約40〜300%の速度向上
・移動履歴に選択状態を含める場合の処理速度が10〜500%向上、また情報を圧縮して省メモリ化も行った
・CLSIDとプレビューハンドラのハッシュをunordered_mapに変更、ただし数が少ないため性能影響は小さい
●内部処理の変更に伴った性能向上
・ソートの比較関数のメモリブロックを近い位置に変更してブロックまたぎを起こりにくくした
・チェック数のカウントロジックの計算量を削減
・内部データの破棄時に1,000件以上あるなら並列で破棄するように変更し、約0〜400%の性能向上
・画面分割で左右比較で、検出解除を明示的に行い同期性を高め、約800〜1,200%の性能向上
また十分な速度が出るようになったので投機実行をやめて追従性と正確性も向上
・チェックボックスの「エクスプローラー風」(ID:33341)のメニュー表記から「(遅い)」を除去
・現在の選択状態の取得方法の抜本見直しと、情報管理の仕組みの再構築で約1,000〜2,000,000%の向上
・情報の衝突率が最悪のケースの場合、選択状態の復元速度が約2,000〜500,000%の向上
・アイコン(旧)/アイコンのみ(旧)のドラッグスクロールや大量選択の性能劣化がなくなった(性能向上倍率がintの桁数を超えたので計測不能)
・選択状態を保持したまま更新の処理速度が10〜500%の性能向上に伴い、中で「選択状態を保持したまま更新」を呼び出す機能全てが高速化
・各種選択系のコマンドの速度は全体的に約10〜3,000%向上
●コード分析対応
・描画周りのポインタを参照へ変更がたくさん
・nullチェック系のコード分析の指摘対応がたくさん
・gotoを4つ削減
a.詳細設定の検索のリトライ修正
b.フォルダサイズ計算の中断×2修正
c.メインフレーム破棄のリトライ修正
●カーソル移動系コマンドの追加(Shift/Ctrlとは連動しない)
・次へカーソル移動(終端の次は先頭)(ID:35760)
・前へカーソル移動(先頭の前は終端)(ID:35761)
・上へカーソル移動(ID:35762)
・下へカーソル移動(ID:35763)
・左へカーソル移動(ID:35764)
・右へカーソル移動(ID:35765)
・先頭へカーソル移動(Home)(ID:35766)
・終端へカーソル移動(End)(ID:35767)
※PAGEUP(ID;35768)、PAGEDOWN(ID;35769)も実装しているがスクロール方向で終端に行く/行かない等の考慮が良く分からないので保留
●ベンチマーク情報のログバー出力追加
・走査の前処理の情報を追加
・走査の後処理の情報を追加
・ミリ秒未満はほぼ誤差なので削除
・クリップボードへ保存コマンドの追加
・情報出力のInformationはサフィックスを付けないように変更
・調査用の隠しスクリプト追加(StackTrace)
※性能低下要因につき、情報が陳腐になったり撤去される可能性があります。
ログバーが表示されている場合に、リストの内部処理のスタックトレースと、各項目の選択/フォーカスステータスを出力します。
ログバーの出力オプションは「その他」のみにし、401件以上出力するようにしないと欠けが発生する可能性があります。
またOther以外の項目を非表示にしておかないと、ログが流れていきます。
1.リストのスタックトレースを最大200件出力
2.フォーカス番号と現在のフルパスを出力(表示項目数が200件超の場合はエラーメッセージ)
3.表示項目の状態を最大200件
選択状態(S)/カーソル移動用選択(s)チェック状態(C)/フォーカス状態(F)/カーソル移動用フォーカス(f)/表示名を出力
【書式】
StackTrace
●設定の削除
・起動時に外部コマンドをキャッシュして呼び出しを速くする
今どきのSSDでは、ほぼ意味がないため
・リストのフォーカスの初期状態を選択にするを廃止
設定の組み合わせで問題のある挙動になるため
・イベントコマンドのディスクの取り外し/取り出しを検出した場合を廃止
・イベントコマンドのディスクの追加/挿入を検出した場合を廃止
・ステータスエリアの選択状態の計算をする上限設定を無視するように変更
性能向上に伴い不要になったため
●コマンドの廃止
・シフトロック範囲選択の開始(ID:35629)の廃止
●その他
・サムネイル画像をファイルに保存コマンド時のピクセル数の並び順の整理と、種類を増加
・埋め込みリネームの発動対象をエクスプローラーに近い条件に変更
※フォーカスアイテム→フォーカスかつ選択アイテム、フォーカスかつ選択アイテムが存在しない場合選択しているもの先頭が対象
エクスプローラーはフォーカスかつ選択アイテムが存在しない場合、選択している2番目が対象で意図が不明
・自動更新の際に、Zipなどリネームでディレクトリ属性が付与されるものへの配慮を追加
・小文字変換際の不必要なメモリ転送を削減した
・vectorから一致するものが存在するか否や、値の大小の評価関数などの引数をテンプレートに変更
・アドレスバーから廃止プロトコル名でアクセスしようとした場合に除去するように変更
●不具合修正
・パス分割ユーティリティでFTPパスの分解に失敗していた不具合の修正
※構文解析のエラーにならないが、Windows10以降はCOMインターフェイスがFTPパスを受け付けないので実害なし
・プロトコル名判定でftpsが抜けていたので追加
・アクセス不能なパス書式のプロトコルルートから上位階層へ移動しようとした場合に落ちる不具合の修正×2