小编Dav*_*Far的帖子

在Java中测量单线程复杂算法的最佳宏基准测试工具/框架是什么?

我想为我的Java代码(一种单线程,本地,复杂的算法)制定一些性能测量(主要是运行时).(所以我不想要宏基准来衡量JVM实现.)

有了这个工具,我想

  • 分析复杂性,即查看我的代码如何缩放参数n(搜索深度).(我已经在n中进行了参数化的junit测试.)
  • 如果某些代码库的更改会使代码变慢,请进行一些趋势分析以获得警告.

为此,我想使用一个工具或框架

  • 进行统计,最优地计算平均值,标准差和置信区间.这是非常重要的.
  • 可以参数化(参见上面的参数n).这也很重要.
  • 能够制作花哨的情节会很好,但不是必需的
  • 可用于自动(junit-)测试,以警告我,如果我的程序运行缓慢,但这也不是必需的,只是一个加号.

哪些工具/框架满足这些要求?哪一个适合复杂性和趋势分析,为什么?

java performance monitoring

53
推荐指数
3
解决办法
2万
查看次数

您如何以编程方式为多播发现机制配置hazelcast?

您如何以编程方式为多播发现机制配置hazelcast?


细节:

文档仅提供TCP/IP的示例并且已过时:它使用不再存在的Config.setPort().

我的配置看起来像这样,但发现不起作用(即我得到输出"Members: 1":

        Config cfg = new Config();                  
        NetworkConfig network = cfg.getNetworkConfig();
        network.setPort(PORT_NUMBER);

        JoinConfig join = network.getJoin();
        join.getTcpIpConfig().setEnabled(false);
        join.getAwsConfig().setEnabled(false);
        join.getMulticastConfig().setEnabled(true);

        join.getMulticastConfig().setMulticastGroup(MULTICAST_ADDRESS);
        join.getMulticastConfig().setMulticastPort(PORT_NUMBER);
        join.getMulticastConfig().setMulticastTimeoutSeconds(200);

        HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
        System.out.println("Members: "+hazelInst.getCluster().getMembers().size());
Run Code Online (Sandbox Code Playgroud)

更新1,考虑到asimarslan的答案

如果我偶然发现MulticastTimeout,我要么得到"Members: 1"或者

2013年12月5日下午8:50:42 com.hazelcast.nio.ReadHandler警告:[192.168.0.9]:4446 [dev] hz._hzInstance_1_dev.IO.thread-in-0关闭套接字到端点地址[192.168.0.7] :4446,原因:java.io.EOFException:远程套接字已关闭!2013年12月5日下午8:57:24 com.hazelcast.instance.Node严重:[192.168.0.9]:4446 [dev]无法加入群集,关闭!com.hazelcast.core.HazelcastException:300秒内无法加入!


更新2,采取pveentjer关于使用tcp/ip的答案

如果我将配置更改为以下内容,我仍然只能获得1个成员:

Config cfg = new Config();                  
NetworkConfig network = cfg.getNetworkConfig();
network.setPort(PORT_NUMBER);

JoinConfig join = network.getJoin();

join.getMulticastConfig().setEnabled(false);
join.getTcpIpConfig().addMember("192.168.0.1").addMember("192.168.0.2").
addMember("192.168.0.3").addMember("192.168.0.4").
addMember("192.168.0.5").addMember("192.168.0.6").
addMember("192.168.0.7").addMember("192.168.0.8").
addMember("192.168.0.9").addMember("192.168.0.10").
addMember("192.168.0.11").setRequiredMember(null).setEnabled(true);

//this sets the allowed connections to the cluster? necessary for …
Run Code Online (Sandbox Code Playgroud)

java configuration multicast hazelcast

22
推荐指数
2
解决办法
3万
查看次数

在C++中键入转换/转换混淆

什么是类型转换?什么是类型转换

我什么时候应该使用它们?

细节:对不起,如果这是一个明显的问题; 我是C++的新手,来自红宝石背景,习惯于to_s等等to_i.

c++ casting type-conversion conversion-operator

12
推荐指数
1
解决办法
6320
查看次数

是否有一个eclipse插件,可以参数化任务标签?

我的Java代码中有一些TODO标记,并希望对它们进行参数化,主要是使用

  • 优先
  • 类型
  • 最后期限.

由于我不想为这些方面的每个组合创建新的任务标签(特别是对于每个截止日期),是否有一个插件可以处理参数化的TODO标签?

例如,它应该正确设置任务的优先级和截止日期

\\TODO !1 ^30.11.1999 #Y2kBug...
Run Code Online (Sandbox Code Playgroud)

细节:

  • 我知道很多人认为TODO评论不好,所以你无需解释......
  • 记住牛奶的风格参数很酷,例如^dueDate!priority.
  • 如果eclipse插件可以在截止日期到达时发出警告,那就太棒了,因为我不再需要额外的测试作为tickler.
  • 也许一些评论工具有我想要的功能的超集?
  • 有时我有一个TODO是另一个TODO的结果(即当我修复第一个TODO时,我将不得不修复另一个,但它不是真正相同的TODO /功能).所以TODO之间的依赖关系会有所帮助.

java comments eclipse-plugin

11
推荐指数
1
解决办法
889
查看次数

什么时候使用破坏者模式和当工作窃取本地存储?

以下是否正确?

  • 破坏者模式具有更好的并行性能和可扩展性,如果每个条目有多种方式(IO操作或注释)进行处理,因为可以使用多个消费者不争进行并行化.
  • 相反,工作窃取(即在本地存储条目和从其他线程窃取条目)具有更好的并行性能和可伸缩性,如果每个条目必须仅以单一方式处理,因为在干扰模式中将条目不相交地分配到多个线程会导致争用.

(当涉及多个生产者(即CAS操作)时,破坏者模式是否仍然比其他无锁多生产者多消费者队列(例如来自提升)快得多?)


我的情况详细:

处理条目可以产生几个新条目,这些条目也必须最终处理.性能具有最高优先级,以FIFO顺序处理的条目具有第二优先级.

在当前实现中,每个线程使用本地FIFO,在其中添加新条目.空闲线程从其他线程的本地FIFO中窃取工作.线程处理之间的依赖关系使用无锁,机械同情的哈希表(写入时的CAS,具有桶粒度)来解决.这导致相当低的争用,但FIFO顺序有时会被破坏.

使用干扰模式可以保证FIFO顺序.但是不会将条目分配到线程上导致更高的争用(例如,读取游标上的CAS),而不是工作窃取的本地FIFO(每个线程的吞吐量大致相同)?


我发现的参考文献

关于破坏者的标准技术论文(第5章+6)中的性能测试不包括不相交的工作分布.

https://groups.google.com/forum/?fromgroups=#!topic/lmax-disruptor/tt3wQthBYd0是我在disruptor +偷窃工作中发现的唯一参考.它声明如果存在任何共享状态,每个线程的队列会显着减慢,但不会详细说明或解释原因.我怀疑这句话适用于我的情况:

  • 使用无锁哈希表解析共享状态;
  • 必须在消费者之间不相交地分发条目;
  • 除了工作窃取之外,每个线程只在其本地队列中进行读写.

concurrency concurrent-programming disruptor-pattern work-stealing

11
推荐指数
1
解决办法
2267
查看次数

使用gradle从nexus服务器复制最新的jar文件

我正在尝试com.bar.baz:mapping:0.0.1-SNAPSHOT使用Gradle从Nexus服务器复制最新的jar文件()。

使用以下build.gradle可以下载特定版本:

apply plugin: "java"

repositories {
    maven {
        credentials  {
            username = "${mavenUser}"
            password = "${mavenPassword}"
        }
        url "https://nexus.cluster.foo.cloud/repository/maven-snapshots"
        authentication {
            basic(BasicAuthentication)
        }
    }
}

configurations {
    copyConf
}

dependencies {
    copyConf group: "com.bar.baz", name: "mapping", version: "0.0.1-20190508.085532-7"
}

task copyTask(type: Copy) {
    from configurations.copyConf
    into "."
}
Run Code Online (Sandbox Code Playgroud)

但是我想下载最新0.0.1-SNAPSHOT版本,而不是特定0.0.1-20190508.085532-7版本。那可能吗?怎么样?

使用version "latest.integration"而不是"0.0.1-20190508.085532-7"(并调用gradle copyTask --refresh-dependencies --stacktrace)会产生:

FAILURE: Build failed with an exception.

* What went wrong: Could not resolve all …
Run Code Online (Sandbox Code Playgroud)

nexus gradle maven build.gradle

11
推荐指数
1
解决办法
217
查看次数

Java中嵌套集合/结构的类型安全展平

我想在Java中压缩任意深度嵌套的某些类型T元素的集合/结构,最好用

  • 只有实时视图而不是复制的集合;
  • 不仅处理集合,而且还有Iterator,任意维度的T数组,Iterable,以及任意混合和嵌套的所有这些结构;
  • 静态类型安全.

有没有一个可以处理这个的java库?


番石榴似乎只处理一个嵌套级别,即Collection<Collection<T>>--flatten - > Collection<T>.

lambdaj看起来很有希望:我可以以某种方式结合on(),asIterator()flattenIterator()实现这一目标吗?以静态类型安全的方式?

java generics collections type-safety lambdaj

10
推荐指数
1
解决办法
1638
查看次数

Smalltalk带来了哪些创新(如MVC,xunit,Hotspot)?

我发现Smalltalk是创新者的越来越多的方面,即第一次创造技术或至少是整体概念.我能想到以下几点:

所有这些都是正确的吗?Smalltalk带来了哪些进一步的创新?

我确定还有更多(例如在语言设计领域?)

language-agnostic programming-languages smalltalk innovation

10
推荐指数
1
解决办法
343
查看次数

为什么我的Java程序通过Eclipse运行速度比通过shell运行快4倍?

当我通过Eclipse执行下面的简单代码示例(版本3.5.2,在Ubuntu 10.04上,java版本"1.6.0_20"OpenJDK运行时环境(IcedTea6 1.9.9)(6b20-1.9.9-0ubuntu1~10.04.2)OpenJDK服务器VM(内置19.0-b09,混合模式)),大约需要10秒钟.当我从我的shell执行它(使用相同的优先级和java版本)时,大约需要40秒.

for (int i = 0; i<1000*1000; i++) {
  System.out.println(Math.cos(i));
}
Run Code Online (Sandbox Code Playgroud)

我还尝试了其他程序,在运行时和输出量方面各不相同:每个程序在shell中都要慢得多.这与执行顺序无关.对于输出很少的程序,Eclipse中的最小百分比差异为85秒,而shell为145秒.

什么原因?

eclipse shell console ubuntu runtime

7
推荐指数
2
解决办法
3392
查看次数

电话簿的数据结构,可以按名称搜索号码,也可以按号码搜索姓名

你知道以下面试问题的解决方案吗?

设计电话簿的数据结构,可以安全有效地按名称搜索数字,并按编号搜索名称.


细节:

stackoverflow上的解决方案都是关于哈希表的,但是,我必须为它构建2个哈希表,这需要两倍的空间.

如何以时间和空间效率,类型安全的方式只使用一个数据结构?

hash dictionary hashmap data-structures

7
推荐指数
2
解决办法
1万
查看次数