草庐IT

MySQL性能优化

全部标签

java - Protocol Buffers 中 getSerializedSize() 的性能损失

在使用writeTo(OutputStream)序列化消息之前,在GPB消息上调用getSerializedSize()是否会降低性能?在将消息写入输出流之前,我需要知道消息的大小。我在Java上使用GPB。 最佳答案 没有性能损失。来自thisthread的第二条消息在Protobuf邮件列表上:YoucancallgetSerializedSize()tofindoutthemessagesizeaheadoftime.Notethatcallingthisdoesn'tactuallywasteanytimesincether

Java:高性能消息传递(单一生产者/单一消费者)

我最初问过这个问题here,但我意识到我的问题不是关于while-true循环。我想知道的是,在Java中进行高性能异步消息传递的正确方法是什么?我正在尝试做什么......我有大约10,000个消费者,每个消费者都从他们的私有(private)队列中消费消息。我有一个线程一条一条地生成消息并将它们放入正确的消费者队列中。每个消费者无限循环,检查消息是否出现在其队列中并处理它。我相信这个术语是“单一生产者/单一消费者”,因为只有一个生产者,每个消费者只在他们的私有(private)队列上工作(多个消费者永远不会从同一个队列中读取数据)。Consumer.java内部:@Override

java - 优化 SSE 代码

我目前正在为需要一些性能改进的Java应用程序开发C模块(请参阅Improvingperformanceofnetworkcoding-encoding了解背景信息)。我已经尝试使用SSE-intrinsics优化代码,它的执行速度比Java版本(~20%)快一些。然而,它仍然不够快。不幸的是,我在优化C代码方面的经验有些有限。因此,我很想获得一些关于如何改进当前实现的想法。构成热点的内部循环如下所示:for(i=0;i 最佳答案 即使不查看程序集,我也能立即看出瓶颈来自4元素收集内存访问和_mm_set_epi32打包操作。在内部

java - DataInputStream\DataOutputStream 的性能

我目前正在使用缓冲流来读写一些文件。在这两者之间,我做了一些数学处理,其中一个符号是一个字节。阅读:InputStreaminput=newFileInputStream(outputname)input.read(byte[]b,intoff,intlen)写:OutputStreamoutput=newBufferedOutputStream(newFileOutputStream(outputname),OUTPUTBUFFERSIZE)output.write((byte)byteinsideaint);现在我需要添加一些标题数据,并支持短符号。我想使用DataInputStr

java - Java 中 ArrayList 和 LinkedList 的区别——性能的原因

我认为我在理论上很好地理解了ArrayList和LinkedList之间的区别。然而,这是第一次,我对其进行了一些测试,测试结果与我的预期大相径庭。期望:Arraylist在插入时会比LinkedList慢开始,因为它必须“移动”元素,对于链表,它的仅更新2个引用。现实:在大多数迭代中都是一样的。对于少数人迭代,它更慢。现实:从beg中删除时性能相同。测试用例:1,000,000个元素publicstaticvoidmain(String[]args){intn=1000000;ListarrayList=newArrayList(n+10);longmilis=System.curr

java - Bitcask 可以用于简单和高性能的文件存储吗?

我正在寻找一种简单的方法来存储和检索数百万个xml文件。目前一切都在文件系统中完成,这存在一些性能问题。我们的要求是:能够在批处理过程中存储数百万个xml文件。XML文件可能有几兆大,大多数在100KB范围内。通过ID进行非常快速的随机查找(例如文档URL)可通过Java和Perl访问在最重要的Linux发行版和Windows上可用我确实看过几个NoSQL平台(例如CouchDB、Riak和其他),虽然这些系统看起来很棒,但它们似乎有点矫枉过正:无需聚类不需要守护进程(“服务”)不需要巧妙的搜索功能在深入研究Riak之后,我发现了Bitcask(参见intro),这似乎正是我想要的。介

java - BufferedReader 性能低下

我正在使用BufferReader.readlLine()逐行处理一些文本文件。两个文件大小相同,均为130MB,但处理一个文件需要40秒,而另一个文件需要75秒。我注意到一个文件有180万行,而另一个文件有210万行。但是,当我尝试处理一个包含300万行且大小相同的文件时,我花了30分钟来处理。所以我的问题是:这种行为是因为缓冲区读取器的查找时间(我想知道BufferedReader是如何工作或逐行解析文件的吗?)有什么方法可以更快地逐行读取文件?好的,friend们,我正在提供更多细节。我使用正则表达式将该行分成三部分,然后使用SimpleUnsortedWriter(由Cassa

java - Java 中的正则表达式及其与 indexOf 相比的性能

请有人告诉我如何匹配“_”和句点“。”使用regex在字符串中excatly一次,使用indexOf()而不是regex表达式是否更有效。Strings="Hello_Wor.ld"ors="12323_!£££$.asdfasd"基本上,_和前后不能出现任何字符。唯一的要求是整个字符串应该只包含一次_和。 最佳答案 indexOf将比正则表达式快得多,并且可能也更容易理解。只测试是否indexOf('_')>=0,然后如果indexOf('_',indexOfFirstUnderScore).在此期间做同样的事情。privateb

Java:getter 方法与公共(public)实例变量:性能和内存

很抱歉提出新手问题。通过引用与值传递很难!所以我有一个具有相当大数据结构的类——多维数组。我需要从另一个类访问这些数组。我可以只公开数组并执行经典的objectWithStructures.structureOne。或者,我可以做setter/getter:添加一个像publicint[][][]getStructureOne()这样的方法。有一个getter会复制多维数组吗?或者它是否通过引用传递它而你不能改变引用的对象?我担心内存和性能。但是公开数据结构,如果不导致复制则速度更快,这似乎是一种糟糕的编码习惯。附录:那么当我使用getter方法返回对对象(例如数组)的引用时,该对象是

java - Hibernate命名查询及其性能优势?

正如hibernate文档所说,命名查询的目的是将HQL从项目中的不同位置清除到某些xml中的单个位置(在声明性方法的情况下)。这意味着在查询修改但重新加载的情况下不需要重新编译session工厂是必需的,这意味着在大多数情况下服务器会在查询对象被缓存时启动。但是在注释的情况下,我需要在实体级别定义命名查询。所以这里再次编译需要。我的问题是命名查询是否也有助于提高性能。这是我的理解:-1)当我使用命名查询时,只有查询对象缓存在二级缓存中。当我说只是查询对象时,它意味着只是查询语法被缓存而不是查询结果。对吗?如果它是正确的,那么它可能仅在HQL的情况下有用,因为我们可以避免将HQL转换为