小编Mr.*_*eah的帖子

Java:Getter和setter比直接访问更快?

我测试了我在Linux上网本上使用VisualVM 1.3.7 编写的Java光线跟踪器的性能.我用剖面仪测量.
为了好玩,我测试了使用getter和setter以及直接访问字段之间的区别.getter和setter是标准代码,没有添加.

我没想到会有任何分歧.但直接访问代码的速度较慢.

这是我在Vector3D中测试的样本:

public float dot(Vector3D other) {
    return x * other.x + y * other.y + z * other.z;
}
Run Code Online (Sandbox Code Playgroud)

时间:1542毫秒/ 1,000,000次调用

public float dot(Vector3D other) {
    return getX() * other.getX() + getY() * other.getY() + getZ() * other.getZ();
}
Run Code Online (Sandbox Code Playgroud)

时间:1453毫秒/ 1,000,000次调用

我没有在微基准测试中测试它,而是在光线跟踪器中测试.我测试代码的方式:

  • 我用第一个代码启动了程序并进行了设置.光线跟踪器尚未运行.
  • 我启动了探查器并在初始化完成后等了一会儿.
  • 我开始了一个光线追踪器.
  • 当VisualVM显示足够的调用时,我停止了探查器并等了一会儿.
  • 我关闭了光线追踪程序.
  • 我用第二个代码替换了第二个代码,并在编译后重复上述步骤.

我至少为这两个代码运行了20,000,000次调用.我关闭了任何我不需要的程序.我设置CPU的性能,所以我的CPU时钟是最大的.每时每刻.
第二个代码如何快6%?

java performance getter-setter

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

可以格式化没有*魔术的列表?

我写了一些有用的Python代码,但是Pylint并不喜欢这个明星.它一直告诉我:

Used * or ** magic (star-args)
Run Code Online (Sandbox Code Playgroud)

没有明星可以编写我的代码吗?一些信息:我正在使用lxml ; self.xml是一个客观化的 XML文件.

@property
def version_string(self):
    '''Return the version as a string.'''
    try:
        version_format = self.xml.version.get("format")
    except AttributeError:
        return None
    version_values = (v.text for v in self.xml.version.v)
    return version_format.format(*version_values)
Run Code Online (Sandbox Code Playgroud)

python pylint

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

来自ESLint插件的Vue.js消息中的“ LHS”是什么意思?

来自Vue.js的官方ESLint插件的消息说:

“ v-model”指令要求使用与LHS有效的属性值。

触发该消息的示例是

<input v-model="foo() + bar()">
Run Code Online (Sandbox Code Playgroud)

LHS是什么意思?

eslint vue.js v-model

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

边缘集合与图形

在ArangoDB中我有一件事没有得到:

边缘集合和图形之间有什么区别?在哪种情况下我应该选择哪种?

graph nosql arangodb polyglot-persistance edge-list

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

在 Go 中请求 UAC 提升

有什么方法可以将 Go 中的新进程或线程提升为管理员吗?

它似乎ShellExecute()在 Go 中不可用,并且不可能使用CreateProcess(). 我不知道还有什么可能。

windows winapi uac go

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