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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。