Questions tagged «optimization»

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

14
C#中的内联函数?
您如何在C#中执行“内联函数”?我认为我不了解这个概念。他们喜欢匿名方法吗?像lambda函数一样? 注意:答案几乎完全涉及内联函数的功能,即“手动或编译器优化,将被调用者的主体替换为函数调用站点”。如果您对匿名(又名lambda)函数感兴趣,请参阅@jalf的答案或每个人都在谈论的“ Lambda”是什么?。
276 c#  optimization  inline 

30
循环反向真的更快吗?
我已经听过好几次了。向后计数时,JavaScript循环真的更快吗?如果是这样,为什么?我已经看到了一些测试套件示例,这些示例显示了反向循环更快,但是我找不到关于原因的任何解释! 我假设这是因为循环不再需要在每次检查是否完成时都求值一个属性,而只需要检查最终的数值即可。 即 for (var i = count - 1; i >= 0; i--) { // count is only evaluated once and then the comparison is always on 0. }


10
如何在HTML中将一个图像放置在另一个图像之上?
我是Rails编程的初学者,试图在页面上显示许多图像。有些图像要放在其他图像之上。为简单起见,假设我要一个蓝色正方形,在蓝色正方形的右上角有一个红色正方形(但在角落不紧)。由于性能问题,我试图避免进行合成(使用ImageMagick等)。 我只想相对于彼此放置重叠的图像。 举一个更困难的例子,想象一下将里程表放在更大的图像中。对于六位数,我将需要合成一百万个不同的图像,或者即时进行处理,其中所需要做的就是将六个图像放置在另一个图像之上。

24
加权版本的random.choice
我需要写一个加权版本的random.choice(列表中的每个元素被选择的可能性都不同)。这是我想出的: def weightedChoice(choices): """Like random.choice, but each element can have a different chance of being selected. choices can be any iterable containing iterables with two items each. Technically, they can have more than two items, the rest will just be ignored. The first item is the thing being chosen, the …

12
用C ++快速编写二进制文件
我试图将大量数据写入我的SSD(固态驱动器)。大量是指80GB。 我浏览了网络以寻找解决方案,但是我想到的最好的方法是: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream myfile; myfile = std::fstream("file.binary", std::ios::out | std::ios::binary); //Here would be some error handling for(int i = 0; i < 32; ++i){ //Some calculations to fill a[] myfile.write((char*)&a,size*sizeof(unsigned long long)); } myfile.close(); …

7
Clang vs GCC-产生更好的二进制文件?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我目前正在使用GCC,但最近发现了Clang,并且正在考虑切换。但是,有一个决定性因素-它生成的二进制文件的质量(速度,内存占用量,可靠性)-如果gcc -O3可以生成运行速度快1%或占用内存减少1%的二进制文件,那么这是一个决定性的因素。 与GCC相比,Clang具有更好的编译速度和更低的编译时内存占用空间,但是我对生成的编译软件的基准测试/比较非常感兴趣-您能指出我的观点还是描述您的经验?


5
在G ++中,优化级别-O3危险吗?
我从各种来源(尽管大部分是我的同事发来的)都听说过,-O3用g ++ 的优化级别进行编译在某种程度上是“危险的”,除非被证明是必要的,否则通常应该避免编译。 这是真的吗?如果是这样,为什么?我应该坚持-O2吗?


4
为什么引入无用的MOV指令会加速x86_64汇编中的紧密循环?
背景: 在使用嵌入式汇编语言优化某些Pascal代码时,我注意到一个不必要的MOV指令,并将其删除。 令我惊讶的是,删除了不必要的指令使我的程序变慢了。 我发现添加任意,无用的MOV指令可以进一步提高性能。 效果是不稳定的,并且会根据执行顺序而变化:同一行垃圾指令在一行中上下移动会导致速度降低。 我知道CPU会进行各种优化和精简,但这似乎更像是黑魔法。 数据: 我的代码版本在运行时间的循环中间有条件地编译了三个垃圾操作2**20==1048576。(周围的程序只计算SHA-256哈希值)。 我的旧机器(Intel(R)Core(TM)2 CPU 6400 @ 2.13 GHz)上的结果: avg time (ms) with -dJUNKOPS: 1822.84 ms avg time (ms) without: 1836.44 ms 程序循环运行25次,每次运行顺序随机更改。 摘抄: {$asmmode intel} procedure example_junkop_in_sha256; var s1, t2 : uint32; begin // Here are parts of the SHA-256 algorithm, in Pascal: // …

3
为什么转置512x512的矩阵要比转置513x513的矩阵慢得多?
在对不同大小的正方形矩阵进行了一些实验之后,出现了一个模式。不变地,转置大小矩阵2^n比转置size 慢2^n+1。对于的较小值n,差异不大。 但是,相差超过512。(至少对我而言) 免责声明:我知道由于元素的两次交换,该函数实际上并未转置矩阵,但没有区别。 遵循代码: #define SAMPLES 1000 #define MATSIZE 512 #include <time.h> #include <iostream> int mat[MATSIZE][MATSIZE]; void transpose() { for ( int i = 0 ; i < MATSIZE ; i++ ) for ( int j = 0 ; j < MATSIZE ; j++ ) { int aux = …

10
在数据库中存储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']} -------------------------------------------------- 这是一个更好的方式(性能明智的,设计明智)比一列,每个属性模型,其中表将有很多像列uid,name,emailid。 我喜欢第一个模型,您可以添加尽可能多的字段,没有限制。 另外,我想知道,既然我已经实现了第一个模型。我该如何对其执行查询,例如,我要获取所有具有“ foo”之类名称的用户? 问题 -使用JSON或每字段列数,哪种更好的方式将用户相关数据存储(请记住字段数是固定的)?另外,如果实现了第一个模型,如何如上所述查询数据库?我是否应该通过将查询可能搜索到的所有数据存储在单独的行中以及将其他数据存储在JSON(是不同的行)中来使用这两种模型? 更新资料 由于不会有太多列需要执行搜索,因此同时使用两个模型是否明智?我需要搜索的数据的每列关键字以及其他数据(在同一MySQL数据库中)的JSON?

12
将JavaScript放在HTML文件中的何处?
假设我有一个相当庞大的JavaScript文件,压缩到大约100kb左右。通过文件,我的意思是这是一个外部文件,可以通过链接进来<script src="...">,而不是粘贴到HTML本身中。 将其放入HTML的最佳位置在哪里? <html> <head> <!-- here? --> <link rel="stylesheet" href="stylez.css" type="text/css" /> <!-- here? --> </head> <body> <!-- here? --> <p>All the page content ...</p> <!-- or here? --> </body> </html> 每个选项之间会有功能上的区别吗?

22
为什么Swift编译时间这么慢?
我正在使用Xcode 6 Beta 6。 这已经困扰了我一段时间,但是现在已经到了几乎无法使用的地步。 我的项目已经开始有一个体面的65个斯威夫特文件的大小和几个桥接Objective-C的文件(这是真的不是问题的原因)。 似乎对任何Swift文件进行任何微小的修改(例如在应用中几乎没有使用的类中添加简单的空白)都会导致重新编译指定目标的整个Swift文件。 经过更深入的调查,我发现CompileSwiftXcode在swiftc目标的所有Swift文件上运行命令的阶段占了编译器时间的几乎100%。 我进行了进一步的研究,如果仅使用默认控制器保留应用程序委托,则编译速度非常快,但是随着我添加越来越多的项目文件,编译时间开始变得很慢。 现在只有65个源文件,每次编译大约需要8/10秒。一点也不快。 我还没有看到任何帖子谈到这个问题,除了这一个,但所以我想知道如果我在这种情况下,只有一个,这是一个旧版本的Xcode 6。 更新 我已经在GitHub上检查了一些Swift项目,例如Alamofire,Euler和CryptoSwift,但是它们都没有足够的Swift文件可以进行实际比较。我发现唯一一个启动时大小合适的项目是SwiftHN,即使它只有十几个源文件,我仍然能够验证同一件事,一个简单的空间,整个项目需要重新编译,这开始需要一个很少的时间(2/3秒)。 与分析器和编译速度都很快的Objective-C代码相比,这确实让Swift永远无法处理大型项目,但是请告诉我我错了。 Xcode 6 Beta 7更新 仍然没有任何改善。这开始变得荒谬。由于缺少#importSwift,我真的看不到苹果将如何进行优化。 使用Xcode 6.3和Swift 1.2进行更新 苹果增加了增量构建(以及许多其他编译器优化)。您必须将代码迁移到Swift 1.2才能看到这些好处,但是Apple在Xcode 6.3中添加了一个工具来帮助您做到这一点: 然而 不要像我那样高兴得太快。他们用来使构建增量的图形求解器尚未得到很好的优化。 的确,首先,它不关注函数签名的更改,因此,如果在一个方法的块中添加空格,则将重新编译所有依赖于该类的文件。 其次,它似乎基于重新编译的文件来创建树,即使更改不影响它们也是如此。例如,如果将这三个类移到不同的文件中 class FileA: NSObject { var foo:String? } class FileB: NSObject { var bar:FileA? } class FileC: NSObject { var baz:FileB? …

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.