Tag: 优化

ADD 1真的比INC快吗? x86

我已经阅读了各种优化指南,声称ADD 1比在x86中使用INC更快。 这是真的吗?

为什么总是closures数据库连接

连接到数据库会消耗很多资源(或不)? 那么,为什么总是在你的应用程序中closures数据库连接,如果你不得不打开它呢? 我可以在整个应用程序中使这个连接全局可用,以便其他类和方法可以重用它吗? 例如:(在伪代码中) public class PopulateGridViews() { public SqlConnection conn = new SqlConnection(@"Database:DATABASE"); conn.Open(); void PopulateGrid1() { SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE1"); cmd.Connection = conn; cmd.ExecuteNonQuery(); cmd.Dispose(); // Populate Grid1 } void PopulateGrid2() { SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE2"); cmd.Connection = conn; cmd.ExecuteNonQuery(); cmd.Dispose(); // Populate Grid2 } […]

什么是find重叠矩形区域的高效algorithm

我的情况 input:一组矩形 每个矩形包含4个双打,如下所示:(x0,y0,x1,y1) 它们不是以任何angular度“旋转”,它们都是相对于屏幕“上/下”和“左/右”的“普通”矩形 他们被随机放置 – 他们可能在边缘触摸,重叠,或没有任何接触 我将有几百个矩形 这是在C#中实现的 我需要find 由它们重叠形成的区域 – canvas中多于一个矩形“覆盖”的所有区域(例如,具有两个矩形,这将是交叉点) 我不需要重叠的几何形状 – 只是区域(例如:4平方英寸) 重叠不应该被多次计算 – 例如,想像3个尺寸和位置相同的交叉 – 它们彼此重叠 – 这个区域应该被计算一次(而不是三次) 例 下面的图片包含三个矩形:A,B,C A和B重叠(如虚线所示) B和C重叠(如虚线所示) 我正在寻找的是显示破折号的地方 – AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA————–BBB AAAAAAAAAAAAAAAA————–BBB AAAAAAAAAAAAAAAA————–BBB AAAAAAAAAAAAAAAA————–BBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB BBBBBB———–CCCCCCCC BBBBBB———–CCCCCCCC BBBBBB———–CCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC

组合和缩小多个CSS / JS文件

我正在尝试通过合并和压缩CSS和JS文件来优化网站性能。 我的问题更多的是关于如何实现这一目标的(具体)步骤,因为我正面临一个真实的情况(尽pipe在其他开发人员中应该是典型的)。 我的页面引用了几个CSS和JS文件,如下所示: <!– It's easier to work on smaller files during development. Hence, the multiple CSS and JS files. –> <link type="text/css" rel="stylesheet" href="/css/main.css" /> <link type="text/css" rel="stylesheet" href="/css/secondary-1.css" /> <link type="text/css" rel="stylesheet" href="/css/secondary-2.css" /> <script type="text/javascript" src="/scripts/js/main.js"></script> <script type="text/javascript" src="/scripts/js/adapter/adapter.js"></script> <script type="text/javascript" src="/scripts/js/adapter/title-adapter.js"></script> 对于产品发布,我想将3个CSS文件合并为一个,并使用例如YUI Compressor将其缩小。 但是,我需要更新所有需要这3个文件的页面来引用新缩小的CSS。 这似乎很容易出错(例如,你正在删除和添加许多文件中的一些行)。 任何其他风险较低的方法? JS文件的相同问题。

生成一组置换(最有效)

我想生成一个集合(集合)的所有排列,如下所示: Collection: 1, 2, 3 Permutations: {1, 2, 3} {1, 3, 2} {2, 1, 3} {2, 3, 1} {3, 1, 2} {3, 2, 1} 一般来说,这不是一个“如何”的问题,而是关于如何最有效的问题。 另外,我不想生成所有的排列并返回它们,但是一次只产生一个排列,并且只在必要时才继续排列(就像迭代器一样 – 我也试过了,但是结果却less了有效)。 我已经testing了很多algorithm和方法,并提出了这个代码,这是我尝试过的最有效的代码: public static bool NextPermutation<T>(T[] elements) where T : IComparable<T> { // More efficient to have a variable instead of accessing a property var count = elements.Length; […]

在PHP中将string转换为整数的最快方法

使用PHP,将string转换为一个整数的最快方法是什么? 为什么这个特定的方法是最快的? 如果得到意外的input,如"hello"或数组,会发生什么?

C#是否优化了string文字的连接?

例如,编译器是否知道翻译 string s = "test " + "this " + "function"; 至 string s = "test this function"; 从而避免string连接的性能打击?

而(1)比。 for(;;)有速度差吗?

长版… while (1)在Perl脚本中使用while (1) for (;;)的速度更快,这for (;;)一名同事今天声称的。 我认为他们应该也是希望翻译能够优化任何差异。 我build立了一个循环迭代运行10亿次的脚本,以及相同数量的while循环,并logging它们之间的时间。 我无法find可观的区别。 我的同事说,一位教授告诉他, while (1)正在做一个比较1 == 1 , for (;;)不是。 我们使用C ++重复了100次的迭代次数,差异可以忽略不计。 然而,这是一个graphics化的例子,说明编译代码与脚本语言相比有多快。 短版… 如果你需要一个无限循环来打破,那么有没有什么理由更喜欢while (1)一个for (;;) ? 注意:如果问题不清楚。 这纯粹是几个朋友之间有趣的学术讨论。 我意识到这不是一个所有程序员都应该为之苦恼的超级重要的概念。 感谢所有伟大的答案(我确信其他人)从这个讨论中学到了一些东西。 更新:上面提到的同事在下面回答了一个答案。 引用这里,以防被埋葬。 它来自AMD程序员。 他表示,C程序员(人员)没有意识到他们的代码效率低下。 他今天说,海湾合作委员会的编译器是非常好的,并把像他这样的人停业。 他举例说,并且告诉了我关于while 1 vs for(;;) 。 我现在习惯使用它,但gcc,特别是解释器,现在都做同样的操作(处理器跳转),因为它们被优化了。

如何让IOStream执行得更好?

大多math习C的C ++用户更喜欢使用printf / scanf系列函数,即使他们使用C ++进行编码。 虽然我承认我发现接口方式更好(特别是类似POSIX的格式和本地化),但似乎压倒性的关注是性能。 看看这个问题: 我怎样才能加快逐行阅读的文件 看来最好的答案是使用fscanf ,并且C ++ ifstream速度一直要慢2-3倍。 我认为如果我们可以编译一个“提示”库来改善IOStreams的性能,那么效果会不错。 要点考虑 缓冲( rdbuf()->pubsetbuf(buffer, size) ) 同步( std::ios_base::sync_with_stdio ) 区域设置处理(我们可以使用一个裁减的语言环境,或完全删除?) 当然,其他的方法是受欢迎的。 注意:Dietmar Kuhl提到了一个“新”实现,但是我无法find关于它的许多细节。 以前的参考文献似乎是死链接。

C循环优化有助于最终分配

因此,对于我的计算机系统类的最终任务,我们需要优化这些forloops比原来的更快。 我们的linux服务器基本等级在7秒以下,全部等级在5秒以内。 这个代码,我在这里得到大约5.6秒。 我想我可能需要用某种方式使用指针来使它更快,但我不太确定。 任何人都可以提供任何提示或选项,我有? 非常感谢! QUICKEDIT:文件必须保留50行或更less,我忽略了教师所包含的那些注释行。 #include <stdio.h> #include <stdlib.h> // You are only allowed to make changes to this code as specified by the comments in it. // The code you submit must have these two values. #define N_TIMES 600000 #define ARRAY_SIZE 10000 int main(void) { double *array = calloc(ARRAY_SIZE, sizeof(double)); double sum […]