小编Dan*_*nny的帖子

为什么JMH会运行不同的叉子?

我正在使用JMH基准测试框架(http://openjdk.java.net/projects/code-tools/jmh/)在我的代码上运行基准测试.我的理解是JMH在基准测试期间多次分配JVM,以便丢弃由JVM在执行期间执行的即时(JIT)分析构建的任何配置文件.

我理解为什么这在某些情况下很有用,如下所示(从http://java-performance.info/jmh/复制逐字):

默认情况下,JHM为每个试验(迭代集)分配一个新的java进程.这是为了保护测试免受先前收集的"配置文件" - 有关其他已加载类及其执行信息的信息.例如,如果你有2个类实现相同的接口并测试它们的性能,那么第一个实现(按测试顺序)可能比第二个(在同一个JVM中)更快,因为JIT替换在发现第二个实现之后,direct方法使用接口方法调用调用第一个实现.

但是,如果您反复对相同的代码进行基准测试,那么运行10个分别为20次迭代的分叉而不是1次分叉200次迭代是否有任何优势?

非常感谢,

丹尼

java benchmarking jmh

13
推荐指数
1
解决办法
2775
查看次数

Model-View-Controller模式如何应用于iPhone开发?

最近我一直在阅读MVC模式,并希望将它应用到我的iPhone开发中.然而,似乎有很多模式的变化,我不确定它应该如何应用.

据我所知,视图将通知控制器已执行的任何操作,控制器将依次更新数据模型(如果需要).每当发生数据更改时,数据模型都会通知视图,然后视图会相应地更新数据的显示.

在该基本模型中,控制器仅具有数据模型的知识.但是,我似乎无法弄清楚如何在我的iPhone应用程序中使用此设计.

以下页面提供了模式的替代版本,其中控制器同时了解数据模型和视图,并且模型和视图之间的所有通信都通过控制器执行.它似乎也表明模型和视图可以访问控制器.我是否正确建议数据模型通过某种形式的通知(通知或KVO)与控制器交互,并且视图通过操作与控制器交互?

这第二个模型是否正确?

http://www.bogotobogo.com/DesignPatterns/mvc_model_view_controller_pattern.html

非常感谢,

丹尼

iphone model-view-controller cocoa-touch

5
推荐指数
1
解决办法
5554
查看次数

在Objective-C编译过程中经历了什么过程

我在尝试编译Objective-C程序时遇到了一些链接器问题,并认为我无法弄清楚问题的原因可能是由于对编译器进程的无知.

是否可以让某人概述编译过程中采取的步骤?

这是我目前了解的过程:

  1. 编译器将任何包含的.h文件的内容复制到它所定义的文件中.编译器不会跟踪是否已包含.h文件,因此它可能会多次包含在项目中.

  2. 任何.m文件都被编译为C等效代码(它们又被编译为目标代码).

  3. 链接器在.h文件中生成的声明与目标代码中的相应函数之间生成链接.通过在同名的.m文件中查找它们来确定适当的函数.

  4. 目标文件连接在一起形成可执行文件,确保main函数位于可执行文件的入口点.然后可能会删除任何声明以节省空间?

假设这是正确的(可能不是这样),这可能意味着您永远不应该#include .m文件,因为您可能最终会遇到多个方法定义,这会导致链接器出现问题.

感谢任何人可以带来的任何照明:).

干杯,

丹尼

compilation objective-c

5
推荐指数
1
解决办法
1099
查看次数

动态加载遵循接口的类

我有几个实现两个接口的类.它们都实现了BaseInterface和其他一些特定于它们的接口.

我希望能够使用下面的loadClass方法来实例化.properties文件中引用的类,并调用它们都包含的公共方法(因为它们实现了BaseInterface).

public interface BaseInterface {
    public void doBase();
}

public interface SpecificInterface extends BaseInterface {
    public void doSpecific();
}

public class SpecificClass implements SpecificInterface {
    public void doBase() { ... }

    public void doSpecific() { ... }
}

public class LoadClass() {
    private PropertiesLoader propertiesLoader = new PropertiesLoader();

    public <C extends BaseInterface> C loadClass(String propertyName) {
        Class<C> theClass;

        // Load the class.
        theClass = propertiesLoader.getPropertyAsClass(propertyName);

        // Create an instance of the …
Run Code Online (Sandbox Code Playgroud)

java reflection interface

4
推荐指数
1
解决办法
7346
查看次数

JMH中hs_gc探查器计数器的含义

我正在使用JMH基准测试工具和hs_gc hotspot profiler.

我遇到的问题是我不确定输出计数器值是什么意思,并且无法在网上找到参考.

有人能指出我的规范方向或解释这些价值观吗?

我在下面粘贴了一个示例输出:

HS(GC) | difference: {

sun.gc.collector.0.invocations=16,
sun.gc.collector.0.lastEntryTime=37106821,
sun.gc.collector.0.lastExitTime=37109336,
sun.gc.collector.0.time=1528884,

sun.gc.collector.1.invocations=6,
sun.gc.collector.1.lastEntryTime=34419368,
sun.gc.collector.1.lastExitTime=35532892,
sun.gc.collector.1.time=6721387,

sun.gc.generation.0.space.0.used=872712984,
sun.gc.generation.1.space.0.used=5721334504,
sun.gc.generation.2.space.0.used=4848,

sun.gc.policy.avgBaseFootprint=5312,

sun.gc.policy.avgMajorIntervalTime=-667,
sun.gc.policy.avgMajorPauseTime=-41,

sun.gc.policy.avgMinorIntervalTime=-557,
sun.gc.policy.avgMinorPauseTime=1,

sun.gc.policy.avgOldLive=88064,
sun.gc.policy.avgPromotedAvg=421184,
sun.gc.policy.avgPromotedDev=364832,
sun.gc.policy.avgPromotedPaddedAvg=1515648,
sun.gc.policy.avgSurvivedAvg=1056640,
sun.gc.policy.avgSurvivedDev=-189440,
sun.gc.policy.avgSurvivedPaddedAvg=488320,
sun.gc.policy.avgYoungLive=2708352,

sun.gc.policy.liveAtLastFullGc=5721334504,
sun.gc.policy.liveSpace=2801664,

sun.gc.policy.majorGcCost=5,
sun.gc.policy.majorPauseYoungSlope=-3,

sun.gc.policy.minorGcCost=2,
sun.gc.policy.minorPauseTime=3,
sun.gc.policy.minorPauseYoungSlope=1,

sun.gc.policy.mutatorCost=-7,

sun.gc.policy.oldEdenSize=11534336,
sun.gc.policy.promoted=4584928,
sun.gc.policy.survived=6194624,

sun.gc.tlab.alloc=12852845,
sun.gc.tlab.fills=-15,

sun.gc.tlab.gcWaste=-100979,
sun.gc.tlab.maxFills=-22,
sun.gc.tlab.maxGcWaste=-100859,
sun.gc.tlab.maxSlowAlloc=-5,
sun.gc.tlab.maxSlowWaste=8826,

sun.gc.tlab.slowAlloc=-5,
sun.gc.tlab.slowWaste=8849}
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jmh

4
推荐指数
1
解决办法
1359
查看次数

强制 OWL 类采用封闭世界假设

我有一个具有以下等价的 OWL 类(采用曼彻斯特表示法):

A and not (hasB some (B and (hasC some C) and (hasD some D) and (hasList some (OWLList and (hasContents some (OWLList and (hasContents some (E and (hasValue some integer[< 200]) and (hasType value "xsd:integer"^^string))) and (hasNext some EmptyList))) and (hasNext some EmptyList)))))

我希望对此类强制执行封闭世界推理,以便任何不满足语句后剩余条件的个人都not将成为此类的成员。

为此,我尝试使hasC,hasDhasList属性具有功能性,以便 OWL 知道不可能有这些属性的其他实例附加到此类。

不幸的是,该hasB属性可能会多次出现,因此无法对其进行限制。为了尝试“关闭”班级的这一部分,我oneOf在班级中添加了一条声明B,指定班级可以接受的所有可能的个人B

在我看来,函数属性和oneOf语句的这种组合应该成功“关闭”该类。谁能告诉我我做错了什么?

我正在使用http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf提出的 OWLList 类和相关属性。

非常感谢。

semantic-web owl description-logic

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