近乎空的 Java For-Loop 行为很奇怪

2024-01-05

此代码按预期打印“平均运行次数:0.99864197”

import java.util.Random;

public class A {
    public static void main(String[] args) {
        int min = -30;
        int max = 1;
        test(min, max);
    }
    static void test(int min, int max){
        int count = 0;
        Random rand = new Random(0);
        for(int j = 0; j < 2097152; j++){
            int number = min + rand.nextInt(max-min+1);
            for(int i = 0; i < number; ++i) {
                System.out.print("");
                count++;
            }
        }
        System.out.println("Average Number of Runs: " + count/65536F);

    }
}

该代码应该打印相同的精确数字,但它打印一个随机负数。

import java.util.Random;

public class A {
    public static void main(String[] args) {
        int min = -30;
        int max = 1;
        test(min, max);
    }
    static void test(int min, int max){
        int count = 0;
        Random rand = new Random(0);
        for(int j = 0; j < 2097152; j++){
            int number = min + rand.nextInt(max-min+1);
            for(int i = 0; i < number; ++i) {
                //System.out.print("");
                count++;
            }
        }
        System.out.println("Average Number of Runs: " + count/65536F);

    }
}

java for 循环中是否有一些优化?

Notes:

  1. 我使用的是jdk1.6.0_45。
  2. 在正常使用中,新的 Random 会有更好的种子。
  3. min 和 max 应该可以是任意数字。

我相信这是 Java 6 某些版本中对非常紧密循环的 JIT 处理中的一个错误。may要么错误 6196102 https://bugs.java.com/bugdatabase/view_bug?bug_id=6196102 or bug 6357124 https://bugs.java.com/bugdatabase/view_bug?bug_id=6357214.

更新到 Java 7 应该可以,尽管我知道这对您的情况没有多大帮助。您可能会发现,在循环中添加“看起来不是无操作,但执行了您不关心的操作”方法调用也可以解决问题。例如,您可以将所有值相加i,然后将其打印到某些诊断日志中以供忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

近乎空的 Java For-Loop 行为很奇怪 的相关文章

  • 如何抑制 Cucumber/Junit 断言堆栈跟踪

    我有一个黄瓜场景 该步骤使用assertEquals 我的结果报告显示了对最终用户不友好的堆栈跟踪 我怎样才能抑制它 Scenario Add two numbers Given I have two inputs 3 and 2 When
  • HttpSession 内的同步是否可行?

    UPDATE 问题后立即解决 问题 通常 同步是在 JVM 内序列化并行请求 例如 private static final Object LOCK new Object public void doSomething synchroniz
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • APNS(Apple 推送通知服务器)的反馈服务

    我们正在使用Java作为推送通知提供商APNS I我能够将消息发送到APNS但我不知道如何获得该消息的反馈 请帮忙 反馈服务具有类似于用于发送推送通知的接口的二进制接口 您可以通过以下方式访问生产反馈服务feedback push appl
  • Spring @Validated 在服务层

    Hej 我想使用 Validated group Foo class 在执行方法之前验证参数的注释 如下所示 public void doFoo Foo Validated groups Foo class foo 当我将此方法放入 Spr
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • 如何停止使用扫描仪从标准输入读取多行?

    我正在做一个 JAVA 作业 应该处理多行输入 指令显示 输入是从标准输入读取的 给出了示例输入的示例 one 1 two 2 three 3 我不明白上面的示例输入 从标准输入读取 是什么意思 这是我编写的一个测试程序 它可以消除我的困惑
  • 如何添加 Java 正则表达式实现中缺少的功能?

    我是 Java 新手 作为一名 Net 开发人员 我非常习惯Regex Net 中的类 Java 实现Regex 正则表达式 还不错 但它缺少一些关键功能 我想为 Java 创建自己的帮助器类 但我想也许已经有一个可用的了 那么 是否有任何
  • javax.persistence.TransactionRequiredException:没有可用于当前线程的实际事务的 EntityManager

    我使用 Hibernate 创建了我的第一个 Spring MVC 项目 我的 DAO 层使用 JPA EntityManager 与数据库交互 GenericDao java Repository public abstract clas
  • 为什么我的 @OneToMany 属性出现主键违规?

    我有一个实体 Entity public class Student GeneratedValue strategy GenerationType AUTO Id private long id OneToMany private Set
  • 为本地@ExceptionHandler编写JUnit测试

    我有以下控制器 class Controller ResponseStatus HttpStatus OK RequestMapping value verifyCert method RequestMethod GET public vo
  • java 中的 Try-with-resources 和 return 语句

    我想知道是否放一个return里面的声明尝试资源block 防止资源自动关闭 try Connection conn return conn createStatement execute 如果我写这样的东西将会联系被关闭 Oracle 文
  • 如何构建和使用 TimeSeriesCollections

    我想在图表的 X 轴上显示一些日期 并且here https stackoverflow com questions 5118684 jfreechart histogram with dates据说我必须使用 TimeSeriesColl
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • 将 PropertyPlaceholderConfigurer 中的所有属性注入到 bean 中

    我有一个PropertyPlaceholderConfigurer加载多个属性文件 我想通过配置 XML 将合并的属性映射注入到 Spring Bean 中 我可以这样做以及如何做 您只需创建一个属性 bean 并将其用于您的Propert
  • 使用 Commons 或 Guava 将文本文件转换为 Java Set

    我想将文件中的每一行加载到 HashSet 集合中 有没有一种简单的方法可以做到这一点 怎么样 Sets newHashSet Files readLines file charSet 使用番石榴 参考 文件 readLines http
  • 一个类中有多个具有相同参数类型的方法

    我知道 至少已经有了关于这个主题的一个问题 https stackoverflow com questions 5561436 can two java methods have same name with different retur
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错

随机推荐

  • 最先进的 Java EE 调试和监控工具

    多年来我第一次深入研究 Java EE 我正在寻找有关 Java EE 调试和监视工具的建议 IDlike找到一个可以让我动态探索线程空间等的工具 我主要使用 Tomcat update 和 Java 5 老鼠 如果您无法使用VisualV
  • 选择表中除表标题行之外的行

    如何使用jquery选择html表格中除表格标题行之外的行 table thead tr th Foo th td Lorem td td Ipsum td tr thead tr th th tr table
  • 如何使用 angularjs 输入文本并渲染 html?

    我想将文本框绑定到 angularjs 变量 并让它在单独的 div 中输出渲染的 html I have div div
  • 我们可以将 Github mac 应用程序与 GitLab 一起使用吗?

    我喜欢 GitHub Mac 应用程序 我通过我的 GitHub 帐户使用它 我加入了一个 GitLab 项目 我想知道是否可以将 GitHub 应用程序与 GitLab 存储库一起使用 我找到了一个post https stackover
  • 作为特定复杂类型扩展的任何类型元素的 xsd 序列

    基本上 如果这是 NET 它会看起来像这样 ISomething string A get int B get var somethings new List
  • Canvas.drawArc() 工件

    我在自定义视图中在画布上绘制圆弧 如下所示 Paint and rectangle被定义在外部onDraw 并为了简单起见添加到其中 protected void onDraw Canvas canvas super onDraw canv
  • javascript: 有没有可以测试网速的JS?

    我将测试我的网站速度 主要是网络服务器延迟 总结一下我想要实现的目标 1 在我的网站上托管一个带有javascript的网页 http myweb com test speed html 2 我把这个网址给我的朋友 3 他们不需要做任何事情
  • 添加(不是合并!)两个行和列不相等的数据框

    我想有效地对两个数据框的条目进行求和 尽管不能保证数据框具有相同的维度或列名称 合并并不是我真正想要的 相反 我想创建一个输出对象 其中包含属于任一添加的数据帧的所有行名称和列名称 在该输出的每个位置 我想对计算值使用以下逻辑 如果行 列配
  • 如何在构建工件后运行脚本

    我正在使用 Idea 做一个小型 LeJOS 项目 一切都很好 除了我希望在编译工件后将准备好的 jar 直接传输到我的 EV3 程序块上 我有一个现成的脚本 我现在从命令行手动启动它 但是 嘿 这是21世纪了 如何让 Idea 在构建工件
  • 模拟私有财产

    假设我们有一个这样的类 class Whatever private var something false fun aMethod Int return if something 1 else 0 根据文档 http mockk io p
  • yii2 中文件未上传

    我想上传图像并将其保存到我的数据库中 这里 数据库中的字段名称是image path 当我尝试上传图像时 它显示错误 调用成员函数saveAs 在线上的非对象上 customer gt file gt saveAs uploads cust
  • EntityFrameworkCore:如何在用户第一次使用应用程序时初始化数据库并为其提供种子

    我使用 Microsoft Visual Studio 2015 和 EntityFrameworkCore 构建了一个项目 我手动播种了一些虚拟数据 并且正在开发我的解决方案 现在 我想将其部署在服务器中 但我遇到的问题是 第一次启动应用
  • java.sql.Timestamp 的 Vaadin 转换器

    我正在使用 PostgreSQL 数据库 时间戳列具有 java sql Timestamp 类 即使此类扩展了 java util Date 当我编辑 PopupDateFiels 时 我也会收到错误 无法将 java util Date
  • 关于 MPI_Reduce

    就一个问题 如果我使用函数 MPI Reduce 当这是一个动态数组时 只有根可以分配接收缓冲区 例如 int r 10 int yloc y yloc calloc r sizeof int for all processes if I
  • 如何在函数内使用 tabyl() 和两个变量?

    我正在制作两个包含大量变量的表 因此我希望编写使用 janitor 包中的 tabyl 的函数 并映射我感兴趣的变量 第一个函数工作正常 cars datasets mtcars first table function variable
  • 处理 .csv 中不需要的(独立)双引号

    我正在尝试使用 Python 的 csv 模块读取格式不正确的 csv 文件 凌乱的 CSV 看起来像这样 name age place date Jack 23 perth australia 12aug Jackie 44 delhi
  • 初始化变量一次以防止“达到 10 $digest() 迭代”

    我正在对控制器中声明的函数返回的列表执行 ng repeat 并且收到 已达到 10 digest 迭代 正在中止 信息 div div 功能 MyCtrl scope gt scope list gt list for e in some
  • 使用 LINQ to NHibernate 将 LINQ IQueryable 转换为分页 IQueryable

    我想做那样的事情 public IQueryable GetPaged
  • Clojure defrecord - 如何使用它?

    我正在尝试创建我自己的不可变数据类型 方法defrecord在 Clojure 中 目标是拥有一个可以创建实例的数据类型 然后调用其方法以返回其自身的新副本以及变异变量 假设 a 和 b 是向量 我想更新两者中的值 并返回整个结构的新副本
  • 近乎空的 Java For-Loop 行为很奇怪

    此代码按预期打印 平均运行次数 0 99864197 import java util Random public class A public static void main String args int min 30 int max