怎么做英文的网站,行业网站设计开发费用,wordpress 图片加链接地址,营销推广是什么c#枚举类似于java总览 Java有许多可能很慢的领域。 但是#xff0c;对于每个问题都有解决方案。 许多解决方案/黑客都需要解决Java的保护问题#xff0c;但是如果您需要低水平的性能#xff0c;还是可以的。 Java使高级编程变得越来越容易#xff0c;但代价是使低级编程变… c#枚举类似于java 总览 Java有许多可能很慢的领域。 但是对于每个问题都有解决方案。 许多解决方案/黑客都需要解决Java的保护问题但是如果您需要低水平的性能还是可以的。 Java使高级编程变得越来越容易但代价是使低级编程变得更加困难。 幸运的是大多数应用程序都遵循经验法则即您将90的时间花费在10的代码中。 这意味着您90的时间状况良好10的时间状况较差。 ; 这让我想知道为什么对于大多数项目您会用C / C 编写超过10的代码。 在某些项目中C / C 是唯一明智的解决方案但是我怀疑大多数C / C 项目将通过使用Java之类的高级语言来提高生产力。 获得类似C的性能的一种方法是通过JNI将C用于代码的关键部分。 如果要避免使用C或JNI仍然可以通过多种方法获得所需的性能。 注意这些建议大多数仅适用于独立应用程序而不适用于applet。 注2使用风险自负。 您可能需要测试在使用低级Java时通常不需要担心的极端情况。 快速阵列访问 Java可能较慢的一个方面是数组访问。 这是因为它隐式地进行边界检查。 JVM足够聪明可以通过检查第一个和最后一个元素来优化对循环的检查但这并不总是适用。 一种解决方法是使用Unsafe类仅在某些JVM上可用而OpenJDK JVM才有该类为每种基本类型都具有getXxxx和setXxxx并允许您直接访问对象数组或直接内存其中您必须进行边界检查。 在本机代码中这些被编译为单个机器代码指令。 还有一个getObjectsetObject方法但是我怀疑它们不能提供很多性能改进在您访问对象时也是如此 您可以通过下载OpenJDK的调试版本并获取其打印已编译的本机代码来检查为方法生成的本机代码。 任意内存访问 您可以再次使用Unsafe类进行任意访问但是“更友好”的方法是使用DirectByteBuffer并根据需要更改其地址和限制通过反射或通过JNI。这将为您提供一个Buffer它指向一个随机区域。内存例如设备缓冲区。 使用更少的内存 这已不再是一个大问题了。 一台16 GB的服务器售价为1000美元一台1 TB的服务器售价约为7万美元。 但是缓存仍然是一种溢价对于某些应用程序来说它值得减少内存消耗。 一个简单的事情是使用Trove 它可以有效地支持集合中的原语。 如果数据表很大则可以按列而不是按行存储数据如果有很多行数据和几列数据。 如果您要按字段扫描数据但不需要所有字段则可以改善缓存行为。 您还可以使用直接内存按需要存储数据。 这就是BigMemory库所使用的。 基于流的IO速度很慢NIO很难使用 如何利用您的两全其美 在NIO中使用阻塞IO这是通道的默认设置除非需要选择器否则不要使用选择器。 在许多情况下它们只会增加复杂性。 大多数系统可以有效处理1K-10K线程。 如果您需要更多的连接请购买另一台服务器一台便宜的服务器的价格约为500美元。 快速高效的字符串 Java 6 update 21具有选项-XX UseCompressedStrings对于不需要16位字符的字符串可以使用byte []代替char []。 对于许多应用程序这可以节省内存但速度较慢。 5-10 相反您可以使用自己的Text类型来包装byte []或者从ByteBufferCharBuffer中获取文本数据或使用Unsafe。 更快的启动时间 当您加载许多肿的库时Java的启动时间往往很慢。 如果这确实是一个问题那么您加载较少的库。 无论如何将它们保持在最低水平是一个好习惯。 这样做您的启动时间将为几秒钟不及C快但可能足够快 更少的GC暂停 大多数Java库自由创建对象通常这不是问题。 但是这并不意味着您无法预先分配对象不能使用直接字节缓冲区和对象回收技术来最大程度地减少对象的创建。 通过增加Eden大小您可以拥有很少使用GC的应用程序。 您甚至可以将其每天减少到一个GC例如按计划的通宵工作 参考 如何从Vanilla Java的 JCG合作伙伴 Peter Lawrey 获得Java的C类性能 。 相关文章 Java中的低GC使用原语而不是包装器 每个程序员都应该知道的事情 正确记录应用程序的10个技巧 软件设计法则 Java最佳实践系列 生存在荒野西部开发过程中的9条提示 翻译自: https://www.javacodegeeks.com/2011/07/how-to-get-c-like-performance-in-java.htmlc#枚举类似于java