Elixir語言中 System
相關用法介紹如下。
模塊提供直接與 VM 或主機係統交互的函數。System
時間
模塊還提供與時間一起工作的函數,返回係統保存的不同時間,支持不同的時間單位。System
依賴係統時間的複雜性之一是它們可能會被調整。例如,當您進入和離開夏令時時,係統時鍾會進行調整,通常會增加或刪除一小時。我們稱這種變化為"time warps"。為了了解此類更改可能是如何有害的,請想象以下代碼:
## DO NOT DO THIS
prev = System.os_time()
# ... execute some code ...
next = System.os_time()
diff = next - prev
如果在代碼執行過程中係統時鍾發生變化,一些在 1 秒內執行的代碼可能會被報告為占用 1 小時以上!為了解決這些問題,VM 通過
提供了一個單調的時間,它不會減少也不會跳躍:System.monotonic_time/0
## DO THIS
prev = System.monotonic_time()
# ... execute some code ...
next = System.monotonic_time()
diff = next - prev
一般來說,VM 提供三種時間測量:
-
os_time/0
-
system_time/0
os_time/0
-
monotonic_time/0
此模塊中的時間函數在 :native
單元中工作(除非另有說明),這取決於操作係統。大多數情況下,所有計算都在 :native
單位中完成,以避免精度損失,最後調用
以轉換為特定時間單位,如 convert_time_unit/3
:millisecond
或 :microsecond
。有關詳細信息,請參閱
類型。time_unit/0
有關不同時間 VM 支持的更完整概要,請參閱 Erlang 文檔中的 chapter on time and time correction。
相關用法
- Elixir System.stop用法及代碼示例
- Elixir System.fetch_env!用法及代碼示例
- Elixir System.fetch_env用法及代碼示例
- Elixir System.get_env用法及代碼示例
- Elixir System.cmd用法及代碼示例
- Elixir System.halt用法及代碼示例
- Elixir System.build_info用法及代碼示例
- Elixir System.shell用法及代碼示例
- Elixir System.pid用法及代碼示例
- Elixir System.restart用法及代碼示例
- Elixir StringIO.flush用法及代碼示例
- Elixir Stream用法及代碼示例
- Elixir String.contains?用法及代碼示例
- Elixir String.reverse用法及代碼示例
- Elixir Stream.drop_while用法及代碼示例
- Elixir String.to_integer用法及代碼示例
- Elixir Stream.map_every用法及代碼示例
- Elixir Stream.iterate用法及代碼示例
- Elixir String.pad_trailing用法及代碼示例
- Elixir Stream.dedup_by用法及代碼示例
- Elixir Stream.interval用法及代碼示例
- Elixir String.split_at用法及代碼示例
- Elixir String.valid?用法及代碼示例
- Elixir String.replace_prefix用法及代碼示例
- Elixir String.printable?用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 System。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。