Tag: 性能

生产者 – 消费者在超级同胞与非超级同胞之间共享内存位置的延迟和吞吐成本是多less?

单个进程中的两个不同的线程可以通过读取和/或写入共享一个共同的内存位置。 通常,这种(有意的)共享是通过使用x86上的lock前缀的primefaces操作来实现的,这对于lock前缀本身(即,无争议的成本)具有相当公知的成本,并且当高速caching行实际上具有额外的一致性成本共享 (真实或虚假分享)。 在这里,我感兴趣的是单线程P写入内存位置的产生消费者成本,另一个线程`C从内存位置读取,都使用普通读写。 在同一个套接字的不同内核上执行这种操作时的延迟和吞吐量是多less,而在最近的x86内核上的同一个物理内核上的同级超线程上执行时,则是​​如此。 在标题中,我使用的术语“超级同胞”是指在同一个内核的两个逻辑线程上运行的两个线程,而内核之间的同级是指在不同的物理内核上运行的两个线程的更常见的情况。

DateTime.DayOfWeek微优化

首先: 我只是为了好玩而渴望学习这个问题。 我不得不承认我喜欢搞微观优化(虽然他们从来没有在我的任何开发中导致速度的显着提高)。 DateTime.DayOfWeek方法不代表我的任何应用程序的瓶颈。 而且在任何其他方面都不太可能成为问题。 如果有人认为这种方法对应用程序的性能有影响,他应该考虑什么时候进行优化 ,然后进行性能分析。 用ILSpy反编译DateTime类,我们找出DateTime.DayOfWeek是如何实现的: [__DynamicallyInvokable] public DayOfWeek DayOfWeek { [__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] get { return (DayOfWeek)((this.InternalTicks / 864000000000L + 1L) % 7L); } } public long Ticks { [__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get { return this.InternalTicks; […]

Android的XML与Java布局的性能

Android SDK为开发人员提供了在xml文件中编写布局或直接在java代码中编写布局。 我已经阅读了它,每个人都说,XML更容易维护和简单写,但它们是静态的。 否则java布局是dynamic的,但没有人评论性能问题。 我发现的唯一一件事就是嵌套布局对性能有负面影响。 而不是编写嵌套布局,最好是自定义一个。 到现在为止还挺好 ;)。 布局devise呢? XML或Java代码? 如何在运行时或编译时parsing我的android的xml文件? 即使它们在编译时被parsing,它们也应该在运行时使用。 那么在xml中声明RelativeLayout或者在onCreate方法中声明它会更快呢?

LINQ环:任何()与包含()巨大的集合

鉴于对象的巨大集合,以下是否有性能差异? Collection.Contains : myCollection.Contains(myElement) Enumerable.Any : myCollection.Any(currentElement => currentElement == myElement)

在Python中实现MATLAB的im2col'sliding'

问:如何加快速度? 下面是我的Matlab的im2col '滑动'的实现与附加function返回每第n列。 该函数将图像(或任何2个暗淡的数组)从左到右,从上到下滑动,挑选给定大小的每个重叠的子图像,并返回一个数组,其列是子图像。 import numpy as np def im2col_sliding(image, block_size, skip=1): rows, cols = image.shape horz_blocks = cols – block_size[1] + 1 vert_blocks = rows – block_size[0] + 1 output_vectors = np.zeros((block_size[0] * block_size[1], horz_blocks * vert_blocks)) itr = 0 for v_b in xrange(vert_blocks): for h_b in xrange(horz_blocks): output_vectors[:, itr] = image[v_b: v_b + […]

File.Copy与手动FileStream.Write复制文件

我的问题是关于文件复制性能。 我们有一个媒体pipe理系统,需要在文件系统上的大量移动文件到不同的位置,包括同一networking上的Windows共享,FTP站点,AmazonS3等等。当我们都在一个Windowsnetworking上时,我们可以逃脱使用System.IO.File.Copy(源,目标)复制文件。 由于很多时候我们只有一个inputstream(就像一个MemoryStream),所以我们尝试抽象复制操作来获取一个inputstream和一个输出stream,但是我们看到一个巨大的性能下降。 下面是一些复制文件的代码作为讨论点。 public void Copy(System.IO.Stream inStream, string outputFilePath) { int bufferSize = 1024 * 64; using (FileStream fileStream = new FileStream(outputFilePath, FileMode.OpenOrCreate, FileAccess.Write)) { int bytesRead = -1; byte[] bytes = new byte[bufferSize]; while ((bytesRead = inStream.Read(bytes, 0, bufferSize)) > 0) { fileStream.Write(bytes, 0, bytesRead); fileStream.Flush(); } } } 有谁知道为什么这比File.Copy慢得多? 有什么我可以做的改善performance? 我只需要把特殊的逻辑,看看我是否从一个窗口位置复制到另一个 – […]

静态与非静态方法

假设你有一些方法可以在非静态类中做成静态的。 例如: private double power(double a, double b) { return (Math.Pow(a, b)); } 你看到从方法签名变成静态的好处吗? 在上面的例子中: private static double power(double a, double b) { return (Math.Pow(a, b)); } 即使有一些性能或内存的增益,编译器是不是会在编译时做一个简单的优化? 编辑:我正在寻找的是通过声明方法静态的好处。 我知道这是常见的做法。 我想了解它背后的逻辑。 当然,这个方法只是一个例子来澄清我的意图。

快速的algorithm实现sorting非常小的列表

这是我很久以前遇到的问题。 我想我可能会问你的想法。 假设我有非常小的数字(整数),4或8个元素,需要sorting,快速列表。 什么是最好的方法/algorithm? 我的方法是使用最大/最小function(10个函数来sorting4个数字,没有分支,iirc)。 // s(i,j) == max(i,j), min(i,j) i,j = s(i,j) k,l = s(k,l) i,k = s(i,k) // i on top j,l = s(j,l) // l on bottom j,k = s(j,k) 我想我的问题更多地涉及到实现,而不是types的algorithm。 在这一点上,它变得有点依赖于硬件,所以让我们假设带有SSE3的Intel 64位处理器。 谢谢

.NET LINQ查询语法与方法链

以下两种说法有什么不同? from item in collection where item.id == 3 select item 和 collection.Where(item => item.id ==3) 一般来说,LINQ语法和方法链之间是否有任何性能差异?

实际表与比较 Div表

这个 <table> <tr> <td>Hello</td> <td>World</td> </tr> </table> 可以这样做: <div> <div style="display: table-row;"> <div style="display: table-cell;">Hello</div> <div style="display: table-cell;">World</div> </div> </div> 现在,这两者在性能和/或渲染速度方面有什么不同吗?或者它们是一样的?