歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

AIX語言環境和執行速度的問題

很多人都不明白AIX語言環境和執行速度有什麼關系。今天,我們就來講解下AIX語言環境和執行速度的問題。本地語言支持(NLS)使應用不同AIX語言環境的操作系統變得十分便利。因為廣泛應用 NLS 對於從系統獲取最優性能變得越來越重要,因此本附錄包含了一個對於 NLS 的簡短回顧。

NLS 允許操作系統定制為適合個別用戶語言和文化期望。一個AIX語言環境是語言和地理或者文化需求的特定組合,它由一個復合名稱來標識,例如 en_US(美國英語)。

對於每個受支持的AIX語言環境,它們有一套消息編目、校勘值表和其它定義該語言環境的要求的信息。當安裝了操作系統以後,系統管理器可選擇應安裝哪個語言環境。然後,各用戶可以通過更改 LANG 和 LC_ALL 變量來控制每個 shell 的語言環境。

不符合上述結構的一個AIX語言環境是 C(或 POSIX)語言環境。除非用戶明確地選擇另一個環境,否則 C 語言環境是系統缺省語言環境。每個新派生的進程也是再此語言環境中開始的。運行 C 語言環境最接近於操作系統在 UNIX 的原始的單語言格式中運行。沒有 C 消息編目。相反,嘗試從編目中獲取消息的程序返回已編譯進程序的默認消息。一些命令,如 sort 還原至它們原始的特定於字符集的算法。

NLS 的性能通常分為三個區域。C 語言環境對於執行命令通常是最快的,接下來是單字節(拉丁字母)語言環境,如 en_US,而多字節語言環境執行命令最慢。

一些簡單的規則

如果程序員未注意到多字節字符集設計的一些限制(這些限制允許許多程序在多字節語言環境中高效運行而幾乎不用國際化函數)則可能編寫出緩慢、多語言應用程序。例如:
· 在 IBM 支持的所有代碼集中,字符代碼 0x00 到 0x3F 是唯一的,並對 ASCII 標准字符進行編碼。唯一是指這些位組合不會作為多字節字符的字節之一字節出現。因為空字符是該集的一部分,所以 strlen()、strcpy() 和 strcat() 函數用來處理多字節以及單字節字符串。程序員必須牢記 strlen() 返回的值是字符串中的字節數,而不是字符數。

· 同樣地,標准字符串函數 strchr(foostr, '/') 在所有AIX語言環境下都運行正常,因為 /(斜槓)是唯一代碼點范圍的一部分。實際上,大多數標准定界符在 0x00 到 0x3F 的范圍內,所以大部分語法分析不用依賴國際化函數或或轉化為 wchar_t 格式就能完成。

· 字符串的比較會出現兩類情況:相等或不等。使用標准 strcmp() 函數來執行比較。當你寫入:
if (strcmp(foostr,"a rose") == 0)
您不是在用其它任何名稱查找 "a rose";您僅在查找該位集。如果 foostr 包含 "a rosE" ,則未找到任何匹配的字符。

· 當你要嘗試在AIX語言環境定義的校勘序列中排列字符串時,將發生不等比較。在那種情況下,你應使用:
if (strcoll(foostr,barstr) > 0)
並且為獲取每個字符的校勘信息要付出性能代價。

· 當執行程序時,它始終 C 語言環境中開始。如果它將使用一個或多個國際化函數(包括訪問消息目錄)則它必須執行:
setlocale(LC_ALL, "");
以在調用任何國際化函數前切換至其父進程的語言環境。

到這裡,我們應該懂得AIX語言環境和執行速度的關系了。

Copyright © Linux教程網 All Rights Reserved