Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Recent Chamber Activity

2023-02-27

Recent Wiki Changes

2023-02-27

Wiki Guide

Side Bar

uRDTSC.PAS

  • R/O
  • R/O (HTTP)
  • R/W (SSH)
  • R/W (HTTPS)
Fork

CPUのRDTSC命令を使って自作プログラムの処理時間を調べる為のユニット

使用目的

  • この関数は全体の何割を消費してるか知りたい
  • この処理は現在何クロックを消費してるか知りたい
という趣味の領域が目的です

使用方法

uses uRDTSC; を追加し

  • 測定したい処理全体の先頭で startRDTSC;
  • 測定したいユニットの先頭で RDTSCst(dtTSCn);
  • 測定したいユニットの終了で RDTSCed(dtTSCn);
....
  • 測定したい処理全体の終了 endRDTSC;
  • この時点で結果はクリップボードに出力されます
  • ユニットには名前を付けておけます dtTSCn.name='func1'; なくても問題ない
  • nは0~9の数字でユニットを識別
  • つまり最大10個のユニットを識別出来ます(増やすならTSCtimerSizeを修正)
パフォーマンスチェックの都度、入れたり外したりが面倒なら
関数の先頭で
  • |$IFDEF enTSC}RDTSCst(dtTSC0);{$ENDIF}

のように入れて 終了で

  • |$IFDEF enTSC}RDTSCed(dtTSC0);{$ENDIF} と入れます。enTSC をコンパイル時に入れなければこれらは外れます
  • 関数の先頭は常に同じ場所を通りますが、exitやraiseがあると入れ忘れる場合もあるでしょう
  • その場合は処理時間が少な目に出るので stcntとedcntのカウント値で確認出来ます
  • また意図的に途中終了の比率を確認する事にも使えるでしょう
  • 結果を自分で表示処理したい場合は endRDTSC;をendRDTSC(false);として、その後でdtTSC配列を確認して下さい
  • 作者:裏目小僧
  • 利用はご自由に。
  • Lazarus2.2.4 32bit/64bit Delphi5である程度動作する事を確認しています
  • Delphiで利用するにはUTF8からの文字コード変換が必要です

Release Files

FilenameSizeTimeDownload count
uRDTSC.pas6.61 k2023-02-27 15:08:5292

Recent Commits

This repository is empty. Nothing has been committed yet.

Latest updated Tickets

No tickets

About Chamber Wiki

Welcome to OSDN Wiki system. Here is your chamber Wiki space.

Check Wiki Guide (English) to refer syntax and functions.