- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在运行一个 GO (1.9.2) 程序,我的代码类似于:
startTime := time.Now()
...
...
fmt.Printf("%v (1) %v \n", user.uid, int64(time.Since(startTime)))
fmt.Printf("%v (F) %v \n", user.uid, int64(time.Since(startTime)))
(两个fmt语句在连续的行上)
我预计打印输出的时间会差不多,但这里是打印的一些结果:
921 (1) 2000100
921 (F) 3040173800
(3 秒)
360 (1) 2000100
360 (F) 1063060800
(1 秒)
447 (1) 4000200
447 (F) 2564146700
(2.5 秒)
两次打印输出之间的时间差一直很高。
这种现象的解释是什么?
额外信息:根据 pprof,打印时大约有 15000 个 goroutine 正在运行,但其中大部分正在等待套接字上的传入数据。
我用 GODEBUG=gctrace=1
运行了代码,但是没有很多 GC 打印输出,几乎没有我代码的打印输出数量那么多。
编辑:似乎按照@Verran 的建议将 time.Since() 的结果存储到变量中可以解决问题。
将 fmt
更改为 log
没有帮助,但打印不再同步。
似乎“问题”在于 fmt
在高负载环境中的处理方式。我希望有人可以阐明这里发生的事情。
最佳答案
不要认为问题与您发布的代码有关。为了找到问题,我建议打印 mem stats比如 GC 调用的次数以及两次打印之间在 GC 上花费了多少。我建议也打印 startTime
以 100% 确定两次连续打印属于同一个 goroutine。
关于go - time.Since() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47773191/
我有一个 git 存储库,其中包含生活在不同时区的不同作者所做的提交。 我想使用 git log 查看自纪元以来的秒数定义的特定时间点以来的历史记录。 根据提供的图像 - 它失败了。可能是什么问题?
我有一个 netcdf 文件,有人传给我,它使用“自 DATE 以来的年数”作为时间单位: double time(time) ; time:standard_name = "time
似乎有两种截然不同的方法可以使用 HTTP header 来实现条件请求,这两种方法都可以用于缓存、范围请求、并发控制等......: If-Unmodified-Since 和 If-Modifie
我正在尝试通过使用 CompUnit 类集预编译它们来创建 POD6 的缓存。 我可以按如下方式创建、存储和检索 pod: use v6.c; use nqp; my $precomp-store =
我正在尝试使用 MATLAB 中的 sinc 函数以采样频率 800e6 重建信号 cos(2*pi*300e6)。当我输入以下代码时,我反而得到了一些非常嘈杂的东西——这不是我想要的。我究竟做错了什
我编写了一些代码来解决与工作相关的问题。这个想法是,该程序处于无限循环中,每 10 分钟检查某个文件夹中是否有新文件,如果有,则将它们复制到另一个文件夹中。我的代码读取文件夹中的所有文件并将列表放入
与网络上的许多教程类似,我尝试使用以下 python 函数实现窗口正弦低通滤波器: def black_wind(w): ''' blackman window of width w''' s
我想知道是否可以在所有没有它的 Java 文件中自动插入 @since 标签。我正在使用 IDEA。 我们有一个模板 /** * @author nkuznetsov * @since 25.03
我正在编写一个 time since 函数来返回自给定 mysql 日期时间以来的时间。当从当前时间()中获取 $oldtime 时,当我需要一个正整数时它返回一个负整数。我以前用其他语言编写过类似的
在 Facebook 上,每个评论或其他用户事件都有一个时间戳。但它并没有列为一个简单的日期,而是以一种人性化的字符串形式呈现。例如,如果现在是 08:38,而评论是在 08:31 发表的,Faceb
我试过用谷歌搜索这个但没有找到这个问题的完整答案: 我可以在 javadoc 中为 @since 注解设置日期格式吗?或者如何查看设置的格式? 最佳答案 The @since tag should b
我正在编写一个服务器,我想检查“If-Modified-Since:” header 。 既然有这么多日期方法,我应该考虑检查哪些方法,像通常的方法(浏览器中使用毫秒).... 以下是我为毫秒格式做的
HTTP 1.1 声明可以有strong 和weak ETag/If-None-Match 验证.我的问题是,Last-Modified/If-Modified-Since 验证是强还是弱? 这会影响
假设我从 REST Web 服务获取一个对象,并且该对象有一个时间戳。这个时间戳有一个毫秒部分。下次我请求同一个对象时,我不希望它被返回,除非它已经改变,所以我使用 If-Modified-Since
我正在通过 python flask 提供一个动态创建的 recent.rss,自然地,它总是通过 200 OK 发送。我打算通过将标题 Expires 设置为 future 一周并检查浏览器是否发送
git-log 手册页说: git log [options] [since..until] [[--] path...] since..until Show only commits between
我正在尝试从本地裸克隆创建一个 --shallow-since 工作克隆,但它一直在 pull 所有内容。 --depth=N 工作正常。 我在想问题是我使用了错误的格式吗?我试过搜索,但没有明确说明
我有一个计算自 startTime 以来的时间的函数,正常运行时间:time.Since(startTime).String()。 返回时间如下: "uptime": "3m54.26744075s"
我有什么 -> 1m16.044455998s 我想要的 -> 1 分 16 秒,没有毫秒、微秒、纳秒。 最佳答案 使用这个 time.Since(t1).Truncate(time.Second).
我正在运行一个 GO (1.9.2) 程序,我的代码类似于: startTime := time.Now() ... ... fmt.Printf("%v (1) %v \n", user.uid,
我是一名优秀的程序员,十分优秀!