我试图让Eclipse v3.5(Galileo)在我的计算机上重新运行 - 我之前运行它没有任何问题,但现在我不断收到此错误:
必须提供Java运行时环境(JRE)或Java开发工具包(JDK)才能运行Eclipse.搜索以下位置后未找到Java虚拟机:当前PATH中的C:\ eclipse\jre\javaw.exe javaw.exe
我刚刚完成了JDK和SDK的全新安装.
我有Windows 7(x64).
怎么了?我如何解决它?
我无法运行任何ipconfig/tracert /或ping.
在Java中,迭代字符串中所有字符的最快方法是什么,这:
String str = "a really, really long string";
for (int i = 0, n = str.length(); i < n; i++) {
char c = str.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
char[] chars = str.toCharArray();
for (int i = 0, n = chars.length; i < n; i++) {
char c = chars[i];
}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果重复调用的成本是什么,我想知道的是charAt长迭代期间方法最终是要么不是比执行一个调用的成本小于或大于toCharArray开头,然后直接在迭代期间访问阵列.
如果有人能够为不同的字符串长度提供强大的基准测试,考虑到JIT预热时间,JVM启动时间等等,而不仅仅是两次调用之间的差异,那就太棒了System.currentTimeMillis().
如果有人能够提供关于两个JVM的优缺点的简要信息,因为它们都依赖于标准JVM规范.
我在oracle网站上看到jre下载有两种类型.
在服务器JRE和JRE中运行我的应用程序有什么不同,是否对选择一个运行时环境而不是另一个运行时环境的应用程序施加了任何限制?
我在http://shootout.alioth.debian.org/中看到了Java -server 用于编程语言基准测试.我知道-server是运行JVM的参数.我想知道:
当我们使用-server参数时它是如何工作的?我们可以将此参数用于java桌面应用程序吗?
谢谢.
我对Java 7的一般经验告诉我它比Java 6更快.但是,我遇到了足够的信息让我相信并非总是如此.
第一部分信息来自此处的 Minecraft Snooper数据.我的目的是查看这些数据,以确定用于发射Minecraft的不同开关的效果.例如,我想知道使用-Xmx4096m是否对性能产生负面或正面影响.在我到达那里之前,我查看了正在使用的不同版本的Java.它涵盖了从1.5到使用1.8的开发人员的所有内容.通常,当您增加java版本时,您会看到fps性能的提高.在1.6的不同版本中,您甚至可以看到这种渐进的趋势.老实说,我并不期待看到尽可能多的不同版本的Java,但我想人们不会像他们应该那样运行更新.
在1.6的后期版本中,您可以获得最高的偷看率.1.7在1.6的后续版本中平均执行大约10fps但仍然高于1.6的早期版本.在我自己的系统中的样本中,几乎不可能看到差异,但是当看到更广泛的样本时,它是清楚的.
为了控制某人可能找到了Java的魔术开关的可能性,我只能通过查看没有传递开关的数据来控制.这样,在我开始查看不同的标志之前,我会有一个合理的控制.
我驳回了我所看到的大部分内容,因为这可能是某些Magic Java 6,有人不与我分享.
现在我一直在研究另一个需要我在InputStream中传递数组以便由另一个API处理的项目.最初我使用了ByteArrayInputStream,因为它可以开箱即用.当我查看代码时,我注意到每个函数都是同步的.由于这个项目没有必要,我重新编写了一个同步剥离.然后我决定在这种情况下想知道同步的一般成本对我来说是什么.
我嘲笑了一个简单的测试只是为了看.我使用System.nanoTime()计算了所有内容,并使用了Java 1.6_20 x86和1.7.0-b147 AMD64,以及1.7_15 AMD64并使用了-server.我预计AMD64版本仅基于架构表现优异,并且具有java 7的优势.我还看了第25,第50和第75百分位数(蓝色,红色,绿色).然而1.6没有服务器击败了其他任何配置的裤子.

所以我的问题是.1.6 -server选项中影响性能的是什么,在1.7中默认为默认值?
我知道1.7中的大部分速度增强来自1.6中的一些更激进的性能选项,但其中一个导致性能差异.我只是不知道要看哪些.
public class ByteInputStream extends InputStream {
public static void main(String args[]) throws IOException {
String song = "This is the song that never ends";
byte[] data = song.getBytes();
byte[] read = new byte[data.length];
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ByteInputStream bis = new ByteInputStream(data);
long startTime, endTime;
for (int i = 0; i < 10; i++) {
/*code for …Run Code Online (Sandbox Code Playgroud) 为什么运行在服务器模式下的Java会说版本是"混合模式"?当我看到它时,是否意味着JVM没有真正加载到纯服务器模式?
我最近开始学习Python,我很惊讶地发现1000深度递归限制(默认情况下).如果你把它设置得足够高,大约30000,就会像C一样崩溃.但是,C似乎要高得多.
(Python人员很快指出,你总是可以将递归函数转换为迭代函数,并且它们总是更快.这是100%正确.但这不是我的问题所在.)
我在Perl中尝试了相同的实验,并且在大约1000万次递归中它消耗了我所有的4个ram并且我使用了^ C来停止尝试.显然,Perl不使用C堆栈,但它在执行时会使用大量的内存 - 考虑到调用函数需要做多少工作,这并不是非常令人震惊.
我在Pike尝试过,并且在大约2秒钟内完成100,000,000次递归完全感到惊讶.我不知道它是如何做到的,但我怀疑它将递归转换为迭代过程 - 它似乎没有消耗任何额外的内存.[注意:Pike确实会使琐碎的案件变得扁平化,但是对于更复杂的案件会发生段错误,或者我被告知.]
我使用了这些无用的功能:
int f(int i, int l) { if(i<l) return f(i+1,l); return i; }
sub f { return f($_[0]+1, $_[1]) if $_[0]<$_[1]; return $_[0] };
def f(i,l):
if i<l:
return f(i+1,l)
return i
Run Code Online (Sandbox Code Playgroud)
我很好奇其他语言(例如,PHP,Ruby,Java,Lua,Ocaml,Haskell)如何处理递归以及它们为何如此处理它.另外,请注意,如果函数是"尾递归"(请参阅注释),它是否会有所不同.
language-agnostic recursion language-features language-design
我在Clojure中编写了一些小的实用程序应用程序,我使用Maven和maven-shade-plugin编译成自包含的可执行JAR文件("uberjars").这些uberjars包含clojure.jar的解压缩版本以及应用程序所依赖的其他库(即:commons-cli).它们很方便,因为我可以将它们发送给客户而无需客户安装Clojure(所有客户都已经安装了JRE).
我发现Clojure应用程序需要几秒钟才能启动,而用Java编写的类似应用程序在相同的机器上以秒为单位启动(例如,显示使用消息的时间).
我怀疑这是因为Clojure正在编译clojure.core库中的一些代码,因为clojure.jar .clj文件中有源代码(文件).
有没有办法预编译这个源代码?可以采取其他措施来加速启动性能吗?我听到客户抱怨启动需要多长时间(他们不知道或不关心应用程序是用Clojure,Java还是Foobar编写的).
我想知道是否有办法将布尔值转换为int而不使用if语句(以免破坏管道).例如,我可以写
int boolToInt( boolean b ){
if ( b )
return 1
return 0
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有办法在没有if语句的情况下完成它,就像Python一样
bool = True
num = 1 * ( bool )
Run Code Online (Sandbox Code Playgroud)
我也认为你可以做到
boolean bool = True;
int myint = Boolean.valueOf( bool ).compareTo( false );
Run Code Online (Sandbox Code Playgroud)
但是这会创建一个额外的对象,所以它真的很浪费,我发现它甚至比if语句方式更慢(这不一定是低效的,只有一个弱点).
java ×8
jvm ×4
performance ×3
jvm-hotspot ×2
boolean ×1
casting ×1
char ×1
clojure ×1
eclipse ×1
if-statement ×1
inputstream ×1
integer ×1
iteration ×1
jrockit ×1
path ×1
recursion ×1
startup ×1
string ×1