之前,我问我的问题,我可以请不要问,以获取有关无故优化的讲座.考虑以下问题纯粹是学术性的.
我一直在考虑Java中根(即经常使用和经常访问)类之间的访问效率,但这适用于大多数OO语言/编译器.我猜测你可以用Java访问某些内容的最快方法是静态的最终引用.从理论上讲,由于该引用在加载期间是可用的,因此良好的JIT编译器将不再需要进行任何引用查找来访问变量,并将对该变量的任何访问指向直接到常量地址.也许出于安全原因,它无论如何也不会那样,但请耐心等待......
假设我已经确定在启动时有一些操作顺序或一些参数传递,这意味着我不能有一个静态的最终引用,即使我要解决每个类构建另一个类的问题.建议让Java类相互具有静态最终引用.我可能不想这样做的另一个原因是......哦,比方说,例如,我提供了其中一些类的平台特定实现.;-)
现在我有两个明显的选择.我可以通过静态引用(在一些系统集线器类上)让我的类彼此了解,这是在构造所有类之后设置的(在此期间我要求它们不能相互访问,从而消除了操作顺序问题)至少在施工期间).另一方面,类可以有实例最终引用彼此,我现在要决定整理操作的顺序是重要的,或者可以让通过args的人的责任 - 或更多的关键,提供我们希望彼此引用的这些类的平台特定实现.
静态变量意味着您不必将变量wrt的位置查找到它所属的类,从而为您节省了一个操作.最后一个变量意味着您根本不必查找该值,但它必须属于您的类,因此您可以保存"一个操作".好吧,我知道我真的现在handwaving!
然后我发生了其他事情:我可能有静态的最终存根类,有点像古怪的界面,每个调用都被降级为'impl',只能扩展存根.然后,性能命中将是运行函数所需的双函数调用,并且可能我猜你不能再声明你的方法 final.我假设如果它们被适当地宣布可能会被内联,然后放弃,因为我意识到我将不得不考虑是否可以将对'impl'的引用变为静态,或最终,或......
那三个中的哪一个会变得最快?:-)
关于降低频繁访问开销甚至其他提示JIT编译器性能的方法的其他想法?
更新:在运行了几个小时的各种测试并阅读http://www.ibm.com/developerworks/java/library/j-jtp02225.html后,我发现在调整时通常会看到大多数事情,例如C++使用JIT编译器完全离开窗口.我已经看到它运行30秒计算一次,两次,并且在第三次(和随后的)运行中决定"嘿,你没有读取计算结果,所以我没有运行它!".
FWIW你可以测试数据结构,我能够开发一个arylylist实现,使用microbenchmark更符合我的需求.访问模式必须足够随机以保持编译器的猜测,但它仍然可以解决如何使用更简单和更多调优的代码更好地实现通用的增长数组.
就这里的测试而言,我根本无法获得基准测试结果!我调用函数和从final和非final对象引用中读取变量的简单测试揭示了JIT比JVM的访问模式更多.令人难以置信的是,在方法中的不同位置对同一对象调用相同的函数会将所需的时间更改为四倍!
正如IBM文章中的人所说,测试优化的唯一方法是原位.
感谢所有在路上指点我的人.
我有一个非常基本的php会话登录脚本.我想强制注销某个用户或强制注销所有用户.
如何阅读我网站上的所有会话,并销毁部分或全部会话?
我在这里有一个案例,我试图找出如何将十六进制数转换为十进制数.
我之前有类似的情况,但发现如果我颠倒了十六进制字符串,并交换了每个第二个值(little-endian),然后将其转换回十进制值,我得到了我想要的,但这个是不同的.
这是我们收到的价值观
价值nr.1是Dec:1348916578 Hex:0a66ab46
我现在只有一个十进制/十六进制,但我想获得更多的值来比较结果.
我希望那里的任何数学天才都能看到这里可能使用的公式:)
谢谢
我正在尝试创建一个遵循以下模型的HR:
-----<title>-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
这是一个相当常见的UI模式,但我没有找到如何在HTML中进行此工作的示例.有没有人有任何想法甚至指向示例?今天早上我一直在谷歌搜索它,到目前为止还没找到我需要的东西.
哦,另外我想要它用于一组表单输入.
谢谢!
我正在尝试从考试70-515做一些练习.不幸的是,我尝试将Northwind连接到网格控件时失败了.这将导致:
NORTHWND.MDF' cannot be opened because it is version 655. This server supports version 612 and earlier. A downgrade path is not supported.
我使用Windows 7 Home和MS Visual Web Developer 2010 Express.就像我理解这个错误一样,SQL Express必须是我系统上的旧版本.我从这里下载并安装了SQL Express 2008r2 .没有效果.从其他来源我发现我可能需要更改实例名称:工具 - >选项 - >数据库工具 - >数据连接 - > SQL Server实例名称.在那里写的是SQLEXPRESS.我不知道还应该在那里插入什么?
如果否定则向上舍入如果正则向下舍入?我有
$rounded =1000
39528,65 round should be --> 39000
Run Code Online (Sandbox Code Playgroud)
和
-30965,77 --> -31000
Run Code Online (Sandbox Code Playgroud) 我是WPF/C#的新手,我正在考虑实现一个自定义窗口装饰器.我需要创建一个关闭按钮,它基本上与关闭或x按钮一样,它出现在每个窗口的Windows应用程序的chrome上.
可能重复:
使用JQuery在第一个表行之后插入新表行
我已经为我的桌子填充了一个tr,我想在firts tr之后添加它.我用这个:
$('#myTable').prepend($tr);
Run Code Online (Sandbox Code Playgroud)
像往常一样,它将我的新tt添加到顶部.
如何将其添加为秒?
我已将我的应用程序提交到AppStore,现在它已在AppStore中.现在,客户希望对应用程序进行一些更改,例如描述,电子邮件,支持URL,客户名称和卖家名称.
注意:
我知道可以更改描述名称,电子邮件地址和支持URL.可以在Apps中更改客户名称吗?(例如:PugalDevan LLC.想改变Pugal LLC.)我不知道如何继续下一步.但我知道,如果我再次向appstore重新提交我的应用程序,那么就会进行更改.如果我重新提交我的应用程序,那么应该更改版本.所以我的客户坚持要我做这些更改.我如何联系苹果帮助团队,请给我一个苹果支持团队邮件ID.请指导我.
谢谢.
问候,
Pugal
我是python的新手,我正在尝试改进现有的在二进制图像中嵌入数据的方法,同时将视觉失真降至最低.我想要实现的当前方法需要具有以每个像素为中心的3x3移动窗口,并分析窗口内区域的平滑度以及黑色和白色簇的数量.然后,该信息将被传递到决策模块,该决策模块将决定要更改的最佳像素以嵌入数据.我玩过PIL和numPy,但没有太大的成功,所以任何建议让我开始将非常感激.
谢谢.