Questions tagged «optimization»

优化是改进方法或设计的行为。在编程中,优化通常采取提高算法速度或减少所需资源的形式。优化的另一个含义是机器学习中使用的数值优化算法。

7
启用优化的不同浮点结果-编译器错误?
以下代码在经过优化和未经优化的情况下均适用于Visual Studio 2008。但是,它仅适用于未经优化(O0)的g ++。 #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout << "r:" << r << std::endl; return r / …
109 c++  optimization  g++  c++-faq 

9
减少.NET应用程序的内存使用量?
有什么技巧可以减少.NET应用程序的内存使用?考虑下面的简单C#程序。 class Program { static void Main(string[] args) { Console.ReadLine(); } } 在x64的发布模式下编译并在Visual Studio外部运行,任务管理器报告以下内容: 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 …

8
添加字典的不同方式
是什么在差异Dictionary.add(key, value)和Dictionary[key] = value? 我注意到,ArgumentException插入重复密钥时,最新版本不会抛出,但是有什么理由偏爱第一版本吗? 编辑:有人对此有权威的信息来源吗?我尝试过MSDN,但它总是像往常一样追逐:(


3
为什么我的应用程序会花费其生命的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 { /// …

2
Django:使用整数设置外键?
有没有一种方法可以使用模型的整数ID设置外键关系?这将出于优化目的。 例如,假设我有一个Employee模型: class Employee(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) type = models.ForeignKey('EmployeeType') 和 EmployeeType(models.Model): type = models.CharField(max_length=100) 我想拥有无限的员工类型的灵活性,但是在部署的应用程序中可能只有一个类型,所以我想知道是否有一种方法可以对ID进行硬编码并以此方式设置关系。这样,我可以避免通过数据库调用先获取EmployeeType对象。

25
Java HashMap性能优化/替代
我想创建一个大型HashMap,但put()性能不够好。有任何想法吗? 欢迎其他数据结构建议,但我需要Java Map的查找功能: map.get(key) 就我而言,我想创建一个包含2600万个条目的地图。使用标准的Java HashMap,插入2到3百万次后,放置速度会变得异常缓慢。 另外,有人知道对密钥使用不同的哈希码分布是否有帮助? 我的哈希码方法: byte[] a = new byte[2]; byte[] b = new byte[3]; ... public int hashCode() { int hash = 503; hash = hash * 5381 + (a[0] + a[1]); hash = hash * 5381 + (b[0] + b[1] + b[2]); return hash; } …

2
libc ++中短字符串优化的机制是什么?
该答案很好地概述了短字符串优化(SSO)。但是,我想更详细地了解它在实践中如何工作,特别是在libc ++实现中: 要符合SSO要求,字符串必须多短?这取决于目标体系结构吗? 访问字符串数据时,实现如何区分短字符串和长字符串?它是否像m_size <= 16其他成员变量中的一部分一样简单?(我想它的m_size一部分或一部分也可以用来存储字符串数据)。 我专门针对libc ++提出了这个问题,因为我知道它使用SSO,甚至在libc ++主页上也提到了这一点。 查看来源后,有一些观察结果: libc ++可以为字符串类使用两个略有不同的内存布局进行编译,这由_LIBCPP_ALTERNATE_STRING_LAYOUT标志控制。两种布局还区分了小端和大端机器,这使我们总共有4种不同的变体。在接下来的内容中,我将采用“普通”布局和小字节序。 进一步假设这size_type是4个字节,也value_type就是1个字节,这就是字符串的前4个字节在内存中的样子: // short string: (s)ize and 3 bytes of char (d)ata sssssss0;dddddddd;dddddddd;dddddddd ^- is_long = 0 // long string: (c)apacity ccccccc1;cccccccc;cccccccc;cccccccc ^- is_long = 1 由于短字符串的大小在高7位中,因此在访问它时需要对其进行移位: size_type __get_short_size() const { return __r_.first().__s.__size_ >> 1; } 同样,长字串容量的getter和setter用来__long_mask解决该is_long位。 我仍在寻找第一个问题的答案,即__min_cap对于不同的体系结构,短字符串的容量将获得什么价值? 其他标准库实现 …


5
Logger slf4j的优点是使用{}格式化而不是字符串连接
使用{}代替字符串串联有什么好处吗? slf4j的示例 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT); 代替 logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT); 我认为这与速度优化有关,因为可以根据配置文件在运行时避免参数评估(和字符串连接)。但是只有两个参数是可能的,因此有时除了字符串串联外别无选择。需要对此问题的看法。


12
哪些列通常可以构成良好的索引?
作为“ 什么是索引,以及如何使用它们来优化数据库中的查询? ” 的后续尝试,在尝试了解索引的地方,哪些列是良好的索引候选者?专门针对MS SQL数据库? 经过一番谷歌搜索后,我读到的所有内容都表明,通常增加且唯一的列构成了很好的索引(例如MySQL的auto_increment之类的东西),我理解这一点,但是我使用的是MS SQL,并且我将GUID用于主键,所以看起来索引不会使GUID列受益...

11
使String的第一个字符小写的最有效方法?
使String小写的第一个字符最有效的方法是什么? 我可以想到许多方法来做到这一点: 使用charAt()与substring() String input = "SomeInputString"; String output = Character.toLowerCase(input.charAt(0)) + (input.length() > 1 ? input.substring(1) : ""); 或使用char数组 String input = "SomeInputString"; char c[] = input.toCharArray(); c[0] = Character.toLowerCase(c[0]); String output = new String(c); 我相信还有许多其他好的方法可以实现这一目标。您有什么推荐的吗?

2
打印所有JVM标志
找到了一个有趣的JVM Flag: java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version 它可以打印数百种各种选项,我以前从未听说过。它还会打印默认值,以帮助更好地诊断JVM行为。另一个有趣的标志是: -XX:+UnlockExperimentalVMOptions 有谁知道解释其中每一个的任何文档?

2
如何使用prefetchPlugin和分析工具优化webpack的构建时间?
先前的研究: 如webpack的Wiki所述,可以使用分析工具来优化构建性能: 来自:https : //github.com/webpack/docs/wiki/build-performance#hints-from-build-stats 建造统计信息提示 有一个分析工具可以可视化您的构建,并提供一些提示,说明如何优化构建大小和构建性能。 您可以通过运行webpack --profile --json-stats.json来生成所需的JSON文件 我生成了stats文件(可在此处获取),并将其上传到webpack的分析工具,并在“ 提示”标签下告诉我要使用prefetchPlugin: 来自:http : //webpack.github.io/analyse/#hints 长模块构建链 使用预取来提高构建性能。从链的中间预取一个模块。 我从内到外挖掘了网络,发现在prefechPlugin上可用的唯一文档是: 来自:https : //webpack.js.org/plugins/prefetch-plugin/ 预取插件 new webpack.PrefetchPlugin([context], request) 对普通模块的请求,该请求甚至在需求发生之前就已解决并构建。这样可以提高性能。首先尝试对构建进行概要分析,以确定巧妙的预取点。 我的问题: 如何正确使用prefetchPlugin? 什么是将其与“分析”工具一起使用的正确工作流程? 我怎么知道prefetchPlugin是否有效?我该如何测量? 从链的中间预取模块意味着什么? 我会很感激一些例子 请帮助我使这个问题成为下一个想要使用prefechPlugin和Analyze工具的开发人员的宝贵资源。谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.