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) 報告的時間。該時間可以無限製地向前或向後調整;os_time/0 -
-system_time/0的 VM 視圖。在時間扭曲的情況下,係統時間和操作係統時間可能不匹配,盡管 VM 致力於對齊它們。這個時間不是單調的(即它可能會減少),因為它的行為被配置為 by the VM time warp mode ;os_time/0 -
- Erlang VM 提供的單調遞增時間。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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
