我發現了一個嚴重的瓶頸 - 我的項目中大約有四分之一的執行時間浪費在tzset
函數中(由mktime
調用)。包含來自glibc的頭文件
我檢查tzset sources(代碼,從行378起),發現設置TZ環境變量,如果一旦將大大減少它的執行時間,因爲它(在我的OS例如/usr/local/etc/zoneinfo
)讀取時區文件TZ環境變量未設置。
我會讀這個文件並設置環境變量,但文件的位置可能會因不同的平面圖而有所不同。所以,我要做的是以某種方式重用代碼tzset
用於這些目的。 這看似簡單,只需包含頭tzset
用於定位和檢索時區信息,並使用此功能:)
#include <timezone/tzfile.h>
,但我真的不知道該怎麼做了,我的意思是使用glibc的頭。編譯器不知道這個頭(我的IDE,Clion,也沒有看到它)。我真的堅持這一點。
你有兩個基本的選擇。添加到你的'configure'腳本中(你知道如何編寫'autoconf'腳本 - 這對任何在非專有POSIX操作系統上開發的人來說都是必備的技能 - 對嗎?固定的一組位置,並使用它來編譯運行時常量。或者,從運行應用程序之前必須設置的某個環境變量中獲取位置。這種情況實際上是'autoconf'和GNU工具鏈的其餘部分的設計目的。 –
「使用自動工具」對於詢問如何在CMake中執行某些操作的人不是有用的答案。 –