VC でのプロファイル
VC 6 の頃はよく使っていたが…
VC 12 では何故かうまく動かなかった.
VC 14 で簡単に動作を確認すると,前より使い易くなっている.
メニューの「分析」-「パフォーマンス プロファイラー」.
「CPU 使用率」にチェックを付けて「開始」.
プロファイル用にビルドされて exe が起動する.
テストする操作を行い exe を終了させる.
暫くすると結果が表示される(この情報の見方はよくわからず).
CPU のグラフの下の「詳細なレポートを作成します…」を「クリック」.
上の方のドロップダウンから「関数」を選択.
表示された関数名のリストから関数をダブルクリック(ここでは CF_GetOuterLine ).
ちょっと意外だったが,Vd3A の代入に時間がかかっている.
2020/12/23
Vd3A の代入ではなく参照にコードを変更.
テストする exe も,もう少し機能を単純化したものを使用.
データにもよるが,該当部分の時間が半分位になった.
更にループ内の Vd3 も参照にしてみたが,こちらは効果なし.
typedef Vector3<double> Vd3 ; // 3D 座標 ( double の x , y , z ) typedef std::vector<Vd3> Vd3A ; // 3D 座標の配列
Vd3A は可変長で,メモリの確保と解放が伴うためと思われる.
* デバッグ版のため実際のコード(計測した Release 版)とは異なると思う.
SetConsoleCtrlHandler
コンソール AP で,キー入力による中断ができないかと…
やりたいことは,時間がかかるコンソール AP で,その途中までの計算結果を保存すること.
「コンソールアプリ 中断」で検索すると ::SetConsoleCtrlHandler を使えば良さそう.
MSDN を「PHANDLER_ROUTINE」で検索.次のサンプルが見つかった.
そのタイトル「Registering a Control Handler Function」で検索.
コントロール ハンドラー関数の登録
https://www.installsetupconfig.com/win32programming/
https://www.installsetupconfig.com/win32programming/winconsolecharapplication8index.html
#pragma message ( … (value) )
FBX SDK を使用したプロジェクトで,コンパイル時 FBX SDK のバージョンを表示したくなった.
FBX 2013.3 SDK 位からは FBXSDK_VERSION_STRING が使える.
#ifdef FBXSDK_VERSION_STRING #pragma message ("FBXSDK_VERSION " FBXSDK_VERSION_STRING) #endif
それより古い場合に,コンパイルオプションで FS_VER=201100 などと指定する様にした.
考え方や動作は意図した通りになったが,この FS_VER を表示できないものかと…
検索すると VC では _CRT_STRINGIZE が使えるとあった.
コンパイル時に#defineの値を表示するにはどうすればよいですか?
#ifdef FS_VER #pragma message ("FS_VER " _CRT_STRINGIZE(FS_VER)) #endif
_CRT_STRINGIZE は …\VC\include\crtdefs.h や …\VC\include\vcruntime.h に定義されている.
古い VC などでも使える様に…
#ifndef __CRT_STRINGIZE #define __CRT_STRINGIZE(Value) #Value #endif #ifndef _CRT_STRINGIZE #define _CRT_STRINGIZE(Value) __CRT_STRINGIZE(Value) #endif
QNAP NAS ファン異常?
11月末位からファンのエラーの通知が来る様になった.
NAS 名: TS253D 重大度: Error 日付/時刻: 2020/12/07 13:40:09 アプリ名: ハードウェアの状態 カテゴリー: ファン メッセージ: [ハードウェアの状態] システムファン1に故障が発生しました。
このエラーは「システム温度」が 25℃を下回ると発生する様子.
「スマートファン」の設定は「温度閾値に応じて速度を調節」にしている.
検索しても特に情報が引っ掛からない.
それで「ユニスター」さんに問合せをかけてみたが,あまり有効な情報は得られなかった.
「温度閾値に応じて…」の設定にしている環境は少ないのかもしれない.
夏場でない限り,システム温度やディスクの温度が問題になることはないと思う.
「スマートファン」の設定を「温度をモニターし,それに応じて速度を調節」-「パフォーマンスモード」に変更.
この設定で 25℃を下回っていても,ファン速度は「1170 RPM」前後になっている.
2022/12/19
一年前はどうだったかわからないが,今のバージョン(QTS 5.0.1.2248 Build 20221215)では解消されている?
もう少し気温が下がらないと何とも言えないが,ファン速度は 1080 RPM で安定している.
MFC DLL error C2371 cerr
FBX SDK を使用したテストプロジェクト.
以前「MFC を使用する」になっていたもの.
関連するコードを変更して「MFC を使用しない」に書き換え.
そのままのコードを「MFC を使用する」に戻すと,…
--------------------構成: T_FBX - Win32 DebugM-------------------- コンパイル中... T_FBX.cpp c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(1941) : error C2371: 'cerr' : 再定義されています。異なる基本型です。 c:\program files\microsoft visual studio\vc98\include\iostream(19) : 'cerr' の宣言を確認してください。 nothing FS_VER VC 6 200508 cl.exe の実行エラー T_FBX.exe - エラー 1、警告 0
前に変更しているが,元に戻す方が良いのか?
そもそもこの部分を削除した方が良いか?
https://dev.mish.work/wordpress/2020/04/17/rc1047-c2679/
今回は i_define.hxx から次の部分を削除.
#ifdef _MSC_VER #ifdef _MFC_VER #else #ifndef afxDump #define afxDump std::terr #endif #endif #endif
必要があれば i_debug.hxx に追加する.
なんかおかしい? DS116 localtime
2020/12/02 0 時過ぎ,個人的に書いているコードがうまく動作していないことに気づいた.
全てではないが,日時の表示が GMT になってしまっている?
うまく動作しているものもあり,次のものは正しく表示される.
この様になった心当たりはある.
昨日 opkg の update と upgrade ,opkg install gcc などを行ったことが影響している?
tree … -D や cal なども GMT になっている.
どこが影響しているかを調べるために少しコードを書いてみた.
#include <clocale> #include <iostream> #include "_tdefine.hxx" #include "timefmt.hxx" int _tmain (int argc,TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; { tstring now_time = ::Now_Format() ; std::tout << _T("::Now_Format() \t") << now_time << std::endl ; } { tstring gmt_time = ::Now_FormatGMT() ; std::tout << _T("::Now_FormatGMT()\t") << gmt_time << std::endl ; } return 0 ; }
Win10 環境では意図した動作.
Microsoft Windows [Version 10.0.18363.1198] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>\\TestXP\C_Temp\Test_cpp\t_mtime\t_localt\Release.060\t_localt.exe ::Now_Format() 2020/12/02 10:22:34 ::Now_FormatGMT() 2020/12/02 01:22:34 C:\Users\Iwao>
DS116 では localtime が正しく求まっていない.
Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ll total 44 drwxrwxrwx+ 2 Iwao users 4096 Dec 2 10:19 . drwxrwxrwx+ 5 Iwao users 4096 Dec 2 10:03 .. -rwxrwxrwx 1 Iwao users 14188 Dec 2 10:19 a.out -rwxrwxrwx+ 1 Iwao users 892 Dec 2 10:02 t_localt.BAK -rwxrwxrwx+ 1 Iwao users 917 Dec 2 10:17 t_localt.cpp -rwxrwxrwx+ 1 Iwao users 4476 Dec 2 10:02 t_localt.dsp Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ./a.out ::Now_Format() 2020/12/02 01:24:30 ::Now_FormatGMT() 2020/12/02 01:24:30 Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$
上の WebGL で現在日時を表示ている .out は,2017/07/19 にコンパイルしたもの.
他の .out で,古いものは正しく動作し,2020/02 のものはうまくない.
どこかに設定などがあるのか?
2020/12/09
GMT と同じ扱いになり困っていたのは,個人的なコードの i_drawlg.hxx .
今日のファイルを求める所で 24*60*60 を加えることで対応.
2022/06/15 DS116 entware
entware の更新で正しく動作する様になった.
NAS の再起動コマンド
SSH 接続 した NAS のシャットダウンと再起動のコマンド.
以前 Synology NAS では sudo shutdown -h now などと書いた.
その後 ASUSTOR NAS や QNAP NAS が増えたので,それらを含めたまとめ.
保有している 3 つの NAS でどれも使えるのは,シャットダウンは poweroff ,再起動は reboot .
Synology NAS ,ASUSTOR NAS では sudo poweroff と sudo reboot .
QNAP NAS では admin で入って poweroff と reboot .