草庐IT

密集度

全部标签

c++ - 在 HD 中进行数据密集型读写的最佳做法是什么?

我正在开发一个C++应用程序(在Linux机器上运行),它非常注重读取日志文件并将派生结果写入磁盘。我想知道哪些是优化此类应用程序的最佳实践:哪些操作系统调整可以提高性能?哪些编程模式可以提高IO吞吐量?预处理数据(转换为二进制、压缩数据等)是否有用?分块/缓冲数据是否有助于提高性能?我应该注意哪些硬件功能?哪些做法最适合分析和衡量这些应用程序的性能?(在这里表达我所缺少的关注)是否有好的读物可以让我了解这方面的基础知识,以便我可以根据我的问题调整现有的专业知识?谢谢 最佳答案 压缩肯定会有很大帮助,而且比调整操作系统要简单得多。查

c++ - 如何优化具有已知瓶颈的计算密集型 C++ 程序?

我正在为我的大学开发一些科学软件。它是在Windows(VS2008)上用C++编写的。该算法必须为大量矩阵对计算一些值,也就是说,在核心处有一个循环遍历矩阵,收集一些数据,例如:sumA=sumAsq=sumB=sumBsq=diffsum=diffsumsq=return=0;for(inty=0;y此例程针对不同的矩阵A、矩阵B对执行了数百万次。我的问题是这个程序非常慢,在Release模式下编译并激活所有优化。使用“忙碌时暂停并检查”调试器技术,我确定该程序几乎每次都位于该循环内,尽管如您所料,该例程被一大堆条件和控制分支。最让我困惑的是,在基于双处理器Xeon的系统上执行期间

c++ - 在 C++ 中复制和操作大型密集二维数组的最快方法是什么

我正在尝试优化我的代码,利用多核处理器来复制任何操作大型密集数组。对于复制:我有一个大的密集数组(大约6000x100000),我需要从中提取15x100000个子数组以在管道中进行多次计算。该管道由许多线性代数函数组成,这些函数由多核blas处理。与线性代数相比,提取数据的时间是否真的很重要是一个悬而未决的问题,但我想谨慎行事,并确保数据复制得到优化。用于操作:我有许多不同的函数可以通过元素或行来操作数组。如果这些中的每一个都是多核完成的,那将是最好的。我的问题是:是否最好使用正确的框架(OpenML、OpenCL)并让编译器产生所有的魔力,还是有更好的函数/库可以更快地做到这一点?

.net - 制作内存密集型后台应用程序 "friendly"

我有一个应用程序需要定期使用计算简单的算法来处理大块数据。事实证明,我还可以通过将数据block保存在内存缓存中来防止因硬盘驱动器访问而减慢系统速度。该应用程序是低优先级应用程序,因此我正在努力将其对系统的影响降到最低,这意味着使用额外的内存(如果可用)来减少CPU和硬盘驱动器的负载。缓存数据只有64MB字节block,内存中的数据越多,程序对驱动器的开销就越小。我需要做的是,每当系统上的任何其他应用程序需要比可用物理内存更多的物理内存时转储内存中的缓存,并且速度足够快,以至于用户永远不会感觉到系统因高内存需求而变慢。我对如何在.NET应用程序中实现这一点特别感兴趣。

windows - CPU密集型线程智慧

我想在一台机器上运行一个批处理,比如20个CPU密集型组合(基本上是非常长的嵌套for循环)。这20个作业中的每一个都不与其他19个作业共享数据。如果机器有N个核心,那么我应该分拆N-1个这些工作吗?还是N?或者我应该只启动所有20个,然后让Windows弄清楚如何安排它们? 最佳答案 不幸的是,没有简单的答案。唯一可以确定的方法是实现并分析您的应用程序。通常,为了获得最大吞吐量,如果作业是纯CPU,您会希望每个核心一个。根据工作类型,这将包括每个超线程代码一个或每个“真正的物理核心”一个。(如果所有20个作业的工作相同,那么超线程

c# - TCP 连接是资源密集型的吗?

我有一个TCP服务器,它从一个(且只有一个)客户端获取数据。当此客户端发送数据时,它会连接到我的服务器,发送一条(逻辑)消息,然后不再在该连接上发送任何消息。然后它将建立另一个连接以发送下一条消息。我有一位同事说,从资源的角度来看,这非常糟糕。他说建立连接是资源密集型的,需要一段时间。他说我需要让这个客户端建立连接,然后只要我们需要通信(或直到出现错误)就一直使用它。使用单独连接的一个好处是,我可能可以对它们进行多线程处理,并在线上获得更高的吞吐量。我向我的同事提到了这一点,他告诉我打开很多套接字会杀死服务器。这是真的吗?或者我可以只允许它为需要发送的每个逻辑消息建立单独的连接。(请注

java - EJB 如何并行化一个长时间的 CPU 密集型进程?

该应用程序有一个CPU密集型长进程,当前在一个服务器上连续运行(一种EJB方法),当客户端请求它时。理论上可以(从概念的角度)将该进程拆分为N个block并并行执行它们,只要可以收集所有并行作业的输出并将其连接在一起,然后再将其发送回客户端启动了这个过程。我想使用这种并行化来优化性能。如何使用EJB实现这种并行化?我知道我们不应该在EJB方法中创建线程。相反,我们应该发布消息(每个作业一个)以供消息驱动的bean(MDB)使用。但那样就不再是同步调用了。在这种情况下,同步似乎是一项要求,因为我需要在将所有作业的输出发送回客户端之前收集它。有解决办法吗? 最佳

python - 堆叠稀疏和密集矩阵

是否可以在python中堆叠稀疏和密集的numpy数组?我知道这可以使用vstack/hstack对密集的numpy数组完成。我想将一些列添加到稀疏矩阵中以增加特征向量的数量 最佳答案 是的,您可以使用scipy.sparse.vstack和scipy.sparse.hstack,与使用numpy.vstack的方式相同和numpy.hstack对于密集阵列。例子:fromscipy.sparseimportcoo_matrixm=coo_matrix(np.array([[0,0,1],[1,0,0],[1,0,0]]))a=np

python - 如何使 TF-IDF 矩阵密集?

我正在使用TfidfVectorizer将原始文档集合转换为TF-IDF特征矩阵,然后我计划将其输入到k-means算法(我将实现)中。在该算法中,我将不得不计算质心(文章类别)和数据点(文章)之间的距离。我将使用欧氏距离,因此我需要这两个实体具有相同的维度,在我的例子中是max_features。这是我所拥有的:tfidf=TfidfVectorizer(max_features=10,strip_accents='unicode',analyzer='word',stop_words=stop_words.extra_stopwords,lowercase=True,use_idf

python - Django 开发服务器 CPU 密集型——如何分析?

我注意到我本地windows7机器上的django开发服务器(版本1.1.1)正在使用大量CPU(~30%,根据任务管理器的python.exe条目),即使在空闲状态下,即没有请求进/出。是否有既定的方法来分析可能造成这种情况的原因?谢谢!马丁 最佳答案 FWIW,您应该进行概要分析,但是当您这样做时我敢打赌您会发现答案是“轮询文件的更改以便它可以自动重新加载”。您可以使用“pythonmanage.pyrunserver--noreload”进行快速测试,看看它如何影响CPU使用率。