- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Java 的新手,我很好奇 Java 与 C++ 相比如何处理普通任务。因此,我将 2 个 C++ 字符串格式化方法(sprintf 和 ostringstream)与使用 Java 的 StringBuilder 进行了比较。对于每个可执行文件,我传递的第一个参数是要测量的迭代次数,因此所有代码看起来大致如下
int numIterations = args[0]; // or argv[1] in C++
// measure begin here, ie:
int begin = System.nanoTime();
// loop to measure
for (int i = 0; i < numIterations; ++i)
{
// formatting code
}
// measure end here, ie
int end = System.nanoTime();
这与我看到其他人分析 Java 代码的方式一致。我注意到对于少量迭代(例如 1000 次),Java 的表现很差。对于更大数量的迭代,(比如 1,000,000)Java 表现相对较好:
1000次迭代
$ ./spf.out 1000
C++ took: 1412618 ns
$ ./oss.out 1000
C++ took: 1816222 ns
$ java StringBuilderTest 1000
Java took: 25787951 ns
1000000 次迭代
$ ./spf.out 1000000
C++ took: 1658699148 ns
$ ./oss.out 1000000
C++ took: 2053606449 ns
$java StringBuilderTest 1000000
Java took: 595965442 ns
我对使用开始/结束计时器分析 Java 代码的方法持怀疑态度,因为我不确定 JITer 究竟是如何工作的。这是衡量 Java 代码的有效方法吗?使用 JIT'er 运行代码时,Java 是否需要做更多的“热身”工作?分析 Java 代码的规范方法是什么。有没有办法在测量性能之前预热 JITer?或者只是理解为小 N JITing 将成为衡量的性能数字的一部分?
最佳答案
Is this a vaild method of measuring Java code?
对于显示的代码是的。 Java 在消除不做任何事情的代码方面比 C++ 聪明得多。 Java 明显更快的 10 个基准测试中有 9 个就是这种情况。
Does Java have more "warming up" to do when running the code with a JIT'er?
是的,热身是分阶段进行的。确保您运行测试 2-10 秒并且它应该足够暖和。您可能会忽略前 10K - 20K 次运行。
What is the canonical way of profiling Java code. Is there a way to warm up the JITer before measuring performance?
方法有很多种。这是最简单的一种。
long begin = 0;
// loop to measure
for (int i = -11000; i < numIterations; ++i)
if (i == 0) begin = System.nanoTime();
Or is it just understood that for small N JITing is going to be part of the performance numbers measured?
这取决于您希望测试的真实程度。如果在生产中代码不会被调用 10,000 次并且它没有完全预热,那就是你应该衡量的。
关于java - Java 的 JITter 如何影响测量代码速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282561/
我有一个导航栏,当您将鼠标悬停在导航按钮上时,我想给它一个橙色的底部边框。唯一的问题是,无论何时悬停,边框都会使内容/导航按钮“抖动”,这是它们不应该的。此外,我已经在导航栏上始终设置了黑色底部边框,
根据documentation ,jitter 函数的解释是“向数值向量添加少量噪声。” 这是什么意思? 是否有一个随机数与向量中的每个数字相关联并添加到其中? 最佳答案 抖动确实意味着只是将随机噪声
假设我有这样的东西: for (int i = 0; i > 1或 x << 1 . Does the jitter actually do so when it is legal? 我不知道。试试吧
我正在使用 Photos 框架和 requestImageForAsset: 花费太多时间,因此它的滚动性能确实很差。 我尝试将 PHImageRequestOptions 选项设置为: let op
我正在开发一个 View Controller 原型(prototype),该原型(prototype)由具有以下要求的 collectionView 组成: 有一张背景图片可见 部分可以像 Acco
我是 Java 的新手,我很好奇 Java 与 C++ 相比如何处理普通任务。因此,我将 2 个 C++ 字符串格式化方法(sprintf 和 ostringstream)与使用 Java 的 Str
我正在为我的VOIP应用程序寻找Java中的自适应 jitter buffer 实现。我为应用程序编写了一个固定的 jitter buffer ,但是由于网络质量差,我遇到了缓冲区不足或缓冲区溢出的问
我要绘制三个组的测量值,每个组有五个观察值。我想绘制所有点,但是每个组中的数值都非常接近。改变 alpha 有帮助,但仍然很难观察到单独的点。 因此我想添加一些水平扩展(在 X 轴上)。点的部分重叠是
我想做的是: a) 让 ggplot 代码每次运行时生成的图都相同 [set.seed 是一种概念吗?] 和 b) 仅对具有相同 y 轴值的标签进行抖动文本标签 - 保留其他文本标签。这似乎是某种基于
我要绘制三个组的测量值,每个组有五个观察值。我想绘制所有点,但是每个组中的数值都非常接近。改变 alpha 有帮助,但仍然很难观察到单独的点。 因此我想添加一些水平扩展(在 X 轴上)。点的部分重叠是
对于 VoIP 语音质量监控应用程序,我需要将传入的 RTP 音频流与引用信号进行比较。对于信号比较本身,我使用预先存在的专用工具。对于其他部分(抓包除外),Gstreamer 库似乎是一个不错的选择
使用 Bootstrap (3.3.6) 折叠,可折叠的 DIV 位于表单输入\标签之间。当 DIV 展开\隐藏时,会出现一种快速\抖动。 问题代码:https://jsfiddle.net/ybto
在我当前的代码库中,复杂的 if 语句通常被委托(delegate)调用所取代。由于代码的结构,在应用程序的过程中将多次调用同一个委托(delegate)。例如, class ExampleClass
我的一个应用程序中的 Gallery 小部件遇到了一个相当奇怪的问题,我想是时候问问其他人了,因为它已经困扰我很长时间了. 我正在为 Gallery 小部件使用自定义 Adapter,并且我在此为 G
我一直在阅读 Eric Lippert的 article关于 C# 编译器的/optimize 命令行选项。文章描述了编译器执行的优化类型。但是,我仍然不清楚此选项是否也会影响 JIT 优化。并非不可
我制作了以下图 block ,带有悬停效果,通过 CSS-transition 增加了 font-size: body { font-family: 'Segoe UI', sans-serif;
如果一个进程被硬件中断(第一级中断处理程序)中断,那么 CPU 调度程序是否意识到这一点(例如,调度程序是否独立于被中断的进程计算硬件中断的执行时间)? 更多详情:我正在尝试解决以下问题:htop 中
如何消除错误 jitter buffer full ? 我使用来自最新快照之一的 ffmpeg。 ffmpeg 版本 N-90078-gf611fef 版权所有 (c) 2000-2018 the F
附上一张照片来解释这个概念,但本质上,我想要一个背景视频或图像,上面有多个 png 像这样分层。 我将如何实现这一目标?我觉得 jit.alphablend 是这个的一个组成部分...... 我也在
我正在更新a package that uses base graphics至 one that uses ggplot2 graphics 。在基本图形版本中,用户可以为 jj 提供一个值,然后该值
我是一名优秀的程序员,十分优秀!