Tag: 优化

SQL Server索引 – 升序或降序,它有什么不同?

当您在MS SQL Server(我正在使用版本2005)的一列或多列上创build索引时,可以指定每列上的索引是升序还是降序。 我很难理解为什么这个select甚至在这里。 使用二进制sorting技术,不会查找速度一样快? 我select哪个订单有什么不同?

减less.NET应用程序的内存使用情况?

有什么提示可以减less.NET应用程序的内存使用量? 考虑以下简单的C#程序。 class Program { static void Main(string[] args) { Console.ReadLine(); } } 在x64的 发行模式下编译并在Visual Studio外部运行,任务pipe理器将报告以下内容: Working Set: 9364k Private Working Set: 2500k Commit Size: 17480k 如果仅为x86编译,则会更好一些: Working Set: 5888k Private Working Set: 1280k Commit Size: 7012k 然后,我尝试了下面的程序,它执行相同的操作,但在运行时初始化后尝试修剪进程大小: class Program { static void Main(string[] args) { minimizeMemory(); Console.ReadLine(); } private static void minimizeMemory() { GC.Collect(GC.MaxGeneration); […]

三元运算符是否比“if”条件更快

我很容易出现“ if-条件综合征 ”,这意味着我总是倾向于使用条件。 我很less使用三元运算符。 例如: //I like to do this: int a; if (i == 0) { a = 10; } else { a = 5; } //When I could do this: int a = (i == 0) ? 10:5; 我用哪一个重要? 哪个更快? 有什么显着的性能差异? 尽可能使用最短的代码是更好的做法吗? 我使用Java编程语言。

为什么我的应用程序花费24%的生命做空检查?

我有一个性能重要的二叉决策树,我想把这个问题集中在一行代码上。 二叉树迭代器的代码如下,运行性能分析的结果。 public ScTreeNode GetNodeForState(int rootIndex, float[] inputs) { 0.2% ScTreeNode node = RootNodes[rootIndex].TreeNode; 24.6% while (node.BranchData != null) { 0.2% BranchNodeData b = node.BranchData; 0.5% node = b.Child2; 12.8% if (inputs[b.SplitInputIndex] <= b.SplitValue) 0.8% node = b.Child1; } 0.4% return node; } BranchData是一个字段,而不是一个属性。 我这样做是为了防止不被内联的风险。 BranchNodeData类如下所示: public sealed class BranchNodeData { /// <summary> /// The […]

使用这个指针会导致热循环中出现奇怪的去最佳化

我最近遇到了一个奇怪的去优化(或者说错过了优化的机会)。 考虑将3位整数数组有效解包为8位整数的函数。 它在每个循环迭代中解包16个整数: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] = t & 0x7; target[1] = (t >> 3) & 0x7; target[2] = (t >> 6) & 0x7; target[3] = (t >> 9) & 0x7; target[4] = (t >> 12) & 0x7; target[5] = (t >> […]

JPEG优化工具?

你知道任何工具(最好是命令行)自动无损地优化JPEG,我可以集成到我们的编译环境吗? 对于PNG,我目前使用的是PNGOUT ,通常可以节省大约40%的带宽/图像大小。 至less,我想要一个可以从JPG中去除元数据的工具 – 我注意到一个奇怪的情况,我试图从照片中制作缩略图,并且不能小于34 kB。 在调查了更多之后,我发现EXIF数据仍然是图像的一部分,删除元数据后缩略图是3 kB。 除此之外 – 是否有可能进一步优化JPGs无损? PNG优化器尝试不同的压缩策略,霍夫曼编码的随机初始化等。 我知道大部分节省来自JPEG质量参数,而这是一个相当主观的测量。 我只是在寻找一个可以作为构build步骤运行的工具,并且无损压缩图像中的几个字节。

如果在循环条件下使用,strlen会被多次计算吗?

我不确定以下代码是否会导致冗余计算,还是编译器特定的? for (int i = 0; i < strlen(ss); ++i) { // blabla } 每次i增加时都会计算strlen()吗?

在数据库中存储JSON与每个密钥都有一个新的列

我正在实施下面的模型来存储用户相关的数据在我的表 – 我有2列 – uid (主键)和一个meta数据列存储关于用户的JSON格式的其他数据。 uid | meta ————————————————– 1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']} ————————————————– 2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']} ————————————————– 这是一种更好的方法(性能明智,devise明智)比每列属性模型,其中表中将有许多列像uid , name , emailid 。 我喜欢的第一种模式是,你可以添加尽可能多的字段,没有限制。 另外,我想知道,现在我已经实现了第一个模型。 我如何对其执行查询,比如,我想获取所有像“foo”这样的名字的用户? 问题 – 在数据库中使用JSON或者按字段存储用户相关数据的更好方法(记住字段数量不固定)? 另外,如果实现了第一个模型,如何查询数据库如上所述? 我是否应该使用这两个模型,将所有可能通过查询search到的数据存储在单独的行中,并将其他数据存储在JSON中(是不同的行)? 更新 由于不会有太多的列需要执行search,使用这两个模型是明智的吗? 我需要search的数据的按键列和其他人的JSON(在同一个MySQL数据库中)?

是否可以将(x == 0 || x == 1)简化为单个操作?

所以我试图在Fibonacci序列中尽可能的写出第n个数字: public uint fibn ( uint N ) { return (N == 0 || N == 1) ? 1 : fibn(N-1) + fibn(N-2); } 但是我想知道是否可以通过改变来使这个更加紧凑和高效 (N == 0 || N == 1) 成一个单一的比较。 有一些奇特的位移操作可以做到这一点吗?

编码实践使编译器/优化器能够制作更快的程序

很多年前,C编译器不是特别聪明。 作为一种解决方法,K&R发明了register关键字,向编译器暗示,将这个variables保存在内部寄存器中可能是个好主意。 他们还让高等运营商帮助生成更好的代码。 随着时间的推移,编译器成熟了。 他们变得非常聪明,因为他们的stream程分析使他们能够做出更好的决定,哪些价值在寄存器中比你可能做的更好。 register关键字变得不重要。 由于别名问题,FORTRAN可能比C更快。 从理论上讲,仔细编码,可以绕过这个限制,使优化器生成更快的代码。 哪些编码实践可以使编译器/优化器生成更快的代码? 确定你使用的平台和编译器,将不胜感激。 为什么这项技术似乎工作? 示例代码是鼓励。 这是一个相关的问题 [编辑]这个问题不是关于整个过程的简介,而是优化。 假设程序编写正确,编译完全优化,testing投入生产。 您的代码中可能存在一些构造,禁止优化器尽其所能地完成最好的工作。 你可以做什么重构,将删除这些禁令,并允许优化器生成更快的代码? [编辑] 偏移相关链接