草庐IT

Spark优化

全部标签

java - 动态生成的 java 字节码是否需要任何优化?

我使用ASM生成了一些java字节码。通过以访问者模式遍历某种小型DSL的某种AST。而且我担心生成的字节码过于“简单”,即没有任何“编译时优化”。虽然在我的例子中,如果生成的字节码没有被优化也可以,但我还是不禁要问:那些在运行时生成字节码的项目是否需要做字节码优化?我知道对于jvm,大部分“优化”工作是在程序运行时通过jit编译完成的。所以编译时的字节码优化可能影响不大。但是,真的吗?对动态生成的字节码做字节码优化就完全没意义了吗?有没有人可以分享一些关于字节码在有和没有任何形式的优化之间的差异的经验,主要是在运行时性能方面? 最佳答案

java - 如何使用@RequestMapping 在 Spring MVC Controller 中优化我的代码?

在我的Controller中,我的Controller方法名称等于请求映射url。例如,/list等于方法名称list。是否有通用的处理程序方法来缩短我的代码?我不想以这种方式编写每个Controller和方法。我记得.netmvc有一种常见的配置方式。SpringMVC怎么样?@Controller@RequestMapping(value="/fooController")publicclassFooController{@RequestMapping("/list")publicStringlist(...){...}@RequestMapping("/save")publicS

java - jvm如何优化循环代码?

有一种方法可以从文本中搜索子串(使用暴力算法,请忽略空指针)publicstaticintforceSearch(Stringtext,Stringpattern){intpatternLength=pattern.length();inttextLength=text.length();for(inti=0,n=textLength-patternLength;i奇怪!使用相同的算法,但下面的代码更快!!!publicstaticintforceSearch(Stringtext,Stringpattern){intpatternLength=pattern.length();int

java - 是否可以在 Java 6 中为 RhinoScriptEngine 设置优化级别?

我遇到了Rhino抛出"Encounteredcodegenerationerrorwhilecompilingscript:generatedbytecodeformethodexceeds64Klimit"的问题通过javax.script.ScriptEngineAPI运行Rhino时出现异常。公认的解决方案似乎是在sun.org.mozilla.javascript.Context上调用setOptimizationLevel(-1)。不幸的是,我似乎无法访问由ContextFactory创建的Context。我尝试将ContextFactory.Listener添加到Cont

Java 开源图像优化库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我正在尝试收集有关所有专注于图像优化的Java开源库的信息。其中之一是pngtastic,但它只处理png图像。你知道其他类似的库吗?

java - JVM JIT 诊断工具和优化技巧

我听说过很多关于JVMJIT可以做什么的信息,但是没有看到很多关于如何分析JIT在给定的程序运行中实际做什么的信息。有很多关于使用-XX:+PrintCompilation和-XX:+PrintOptoAssembly的提示,但它会产生难以解释的非常低级的信息。一般来说,在优化过程中,我希望有一套具有专用JIT预热时间等的常见操作基准测试套件,但我希望能够看到哪些优化实际上在我的代码上触发。也许我的JVM考虑过内联一个特定的方法调用,但由于某些原因它决定不这样做,或者JIT无法避免在我的循环中进行数组边界检查,因为我对不变量和循环条件的表述过于模糊。我希望像YourKit这样的工具能够

java - 将 spark 数据帧写入 Parquet 格式时出现内存不足错误

我正在尝试从数据库中查询数据,对其进行一些转换并将新数据以Parquet格式保存在hdfs上。由于数据库查询返回大量行,我正在分批获取数据并对每个传入批处理运行上述过程。更新2:批处理逻辑是:importscala.collection.JavaConverters._importorg.apache.spark.SparkContextimportorg.apache.spark.sql.SQLContextimportorg.apache.spark.sql.Rowimportorg.apache.spark.sql.types.{StructType,StructField,St

java - Apache Spark 如何将函数发送到引擎盖下的其他机器

我开始使用Pyspark进行一些数据处理。我可以做一些像这样的事情对我来说很有趣rdd.map(lambdax:(x['somekey'],1)).reduceByKey(lambdax,y:x+y).count()它会将这些函数中的逻辑发送到可能多台机器上以并行执行。现在,如果我有Java背景,如果我想将包含某些方法的对象发送到另一台机器,那台机器需要知道通过网络流式传输的对象的类定义。最近java有了函数式接口(interface)的想法,它将在编译时为我创建该接口(interface)的实现(即MyInterfaceimpl=()->System.out.println("Stu

java - Spark Kryo 注册数组类

我正在尝试用数组注册一个类(激活了Kryo的SparkJava),日志显示一条​​明确的消息:Classisnotregistered:org.apache.spark.sql.execution.datasources.InMemoryFileIndex$SerializableBlockLocation[]我已经写了几个组合,但这些都不起作用:kryo.register(Class.forName("org.apache.spark.sql.execution.datasources.InMemoryFileIndex$SerializableBlockLocation[]"));

java - Java JIT 是否确定性地编译字节码——在同一台机器上每次运行都进行相同的优化?

JavaJIT是否在同一台机器上每次运行时都使用相同的优化来编译字节码?它是否考虑了给定时刻的CPU使用率等动态因素,还是每次都会进行相同的优化而不考虑临时因素? 最佳答案 不,优化是不确定的。即使您运行完全相同的单线程、完全确定性程序,JIT用来确定要优化哪些方法的采样器也可以选择不同的集合。另一件可以改变生成的机器代码的事情是代码引用的某些常量的实际内存位置。JIT可以发出直接访问这些内存位置的机器指令,从而导致不同遍的机器代码之间存在额外差异。研究人员使用JikesRVM通过使用名为CompilerReplay的功能解决了他们