Questions tagged «efficiency»

请使用此标记来比较各种系统或算法或衡量效率的方法的效率。大O表示法与复杂度更多相关,但可能会影响效率。

6
对于程序员来说,有效学习Google的重要性?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 这不是关于使用Google对程序员的好坏的辩论。 请不要在您的答案中这样做。 如今,大多数人(绝大多数使用互联网的人)都在使用Google。我要说的是20个更有效的 Google搜索提示。 问题:您认为这对程序员有多重要? 问题:有经验的搜索(有关此问题的更多知识)与有效率的搜索(即有经验的人进行的搜索与可以更好地进行搜索的人的搜索)相比如何?在产量还是质量上。 问题:您认为这应该在编程学校,实习生或实习生级别上教授吗? 请不要讨论发展对Google的依赖以解决问题。1)主题不是重点2)如果他们不能解决问题,大多数时候他们将不会被雇用。 问题:这些天是否已经在好的编程学校教授过? 注意: 诚然,这篇文章并不新鲜。 该网站上的某些问题是由程序员发布的简单Google搜索回答的,他们本可以进行更好的搜索。不管期望答案有个人风格,大多数都是对直接或不成功搜索的真正答案。 对于优秀的程序员来说,这可能是常识。但是恕我直言,事实并非如此。 两者之间有区别 谷歌搜索 高效搜索

5
最终价格昂贵
对于在退出函数之前必须进行资源清理的代码,这两种执行方法之间在性能上存在重大差异。 在每个return语句之前清理资源 void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } 最终清除资源 void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == …

1
C#字典的效率
C#字典是查找某些东西是否存在等的简单方法。但是我对它们的工作方式有疑问。假设不是字典,而是使用ArrayList。我没有使用ContainsKey(或使用另一种语言的等效方法)循环遍历ArrayList来检查那里是否存在某些东西(或者如果对数据进行排序或类似的操作,则执行二进制搜索)。效率有何不同?该ContainsKey方法是否使用某种更有效的方法,而不是遍历键并检查我搜索的内容是否存在? 如果说我创建了一个特定的哈希函数,该哈希函数与我拥有的数据类型相对应,并且是专门针对该数据集而设计的,那么是的,该哈希函数的确比循环遍历数据的速度更快。但是字典是通用的。ContainsKey方法不是特定于它获取的数据,它是一种常规的搜索方法。 基本上我要问的是。词典对程序员很有帮助。它们包括对许多事情有帮助的方法,并且它们将字符串与整数,(键和值)等结合在一起。但是关于效率,他们提供了什么?什么是在具有的差异dictionaryVS一个ArrayList的structs(string,int)

2
摊销分析?(最坏情况下的性能保证)
什么是摊销分析?以及它如何帮助我在程序中实现最坏情况的性能保证? 我正在阅读以下技术可以帮助程序员获得最坏情况的性能保证(即,用我自己的话说:保证程序的运行时间不会超过最差转换的运行时间): 随机算法(例如,在最坏的情况下,快速排序算法是二次方的,但是对输入进行随机排序可以保证其运行时间是线性的概率) 操作顺序(我们的分析必须同时考虑数据和客户端执行的操作顺序) 摊销分析(提供绩效保证的另一种方法是通过跟踪所有工序的总成本除以工序数来摊销成本。在这种情况下,我们可以允许一些昂贵的工序,同时保持平均成本换句话讲,通过将一部分费用分配给大量廉价操作中的每一项,我们分散了一些昂贵操作的成本) 作者提到将调整数组数据结构的大小用于Stack作为如何实现摊销分析的一个示例,但我仍然不明白什么是摊销分析,以及如何实际实现(摊分分析?铸造性能保证

5
什么是衡量测试/测试人员效率的好方法?
我即将参加与管理层的讨论,以衡量我们作为质量保证组织的测试效率。这背后的主要原因是我们的团队有一半被外包出去了,我们的业务想提供一些关于我们效率/效率的指标,以便我们有基础数据可用来与承包商的服务协议进行合同参数谈判。 我已经提出了一些建议,并且我在该主题上发现的大多数意见都围绕着开发人员的效率:代码行,交付的故事点,引入的缺陷等。 但是测试人员呢?我们的测试主要是基于需求的,并且混合了手动,半自动和自动测试(不是因为我们还没有自动完成所有工作,而是因为某些事情在我们的测试系统中无法实现自动化)。

5
学习一种新语言是否为时过早?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 个人背景:最近6个月,我在大学里正式学习C ++。在此之前,我涉足JavaScript已有一年。现在,我正在考虑在放假的一个月内学习Python。 通过在学习过程的早期分散我的注意力,是否会降低学习效率?我应该花一个月的时间继续使用C ++吗?还是学习一种新语言永远不会太早?

3
我如何估算一行代码的寿命?
我正在尝试找出一种方法来分析开源项目中的代码寿命:即,特定代码行处于活动状态并使用了多长时间。 我当前的想法是,一行代码的生命周期从第一次提交时开始,到发生以下情况之一时结束: 它已被编辑或删除, 从构建中排除, 一段时间(例如一年)内不会维护其内部版本中的代码。 注意:为了澄清为什么将“编辑”视为“死亡”,已编辑的行将被视为“新一代”或代码行。同样,除非有简单的方法可以做到,否则就无法说明血统的长寿或祖先的后裔。 还有什么会决定一行代码的寿命?

6
有针对编程的笔记本吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我知道工程纸存在,但是有没有公司为笔记/伪代码/设计制作程序员专用的笔记本? 纸张是我概述事情的首选方式,因此在我的工具列表中添加专用垫将非常有益。

2
有多少个使用线程?
当我在台式机/笔记本电脑上(重新)构建大型系统时,我告诉我make使用多个线程来加快编译速度,如下所示: $ make -j$[ $K * $C ] $C应该在哪里指示机器拥有的内核数量(我们可以假设它是一位数字),而根据我的心情,$K我从2到有所不同4。 因此,例如,我可能会说make -j12我是否有4个核心,这表示make要使用多达12个线程。 我的基本原理是,如果仅使用$C线程,则内核将在进程忙于从驱动器中获取数据时处于空闲状态。但是,如果我不限制线程数(即make -j),那我就有浪费时间切换上下文,耗尽内存或什至更糟的风险。假设计算机具有$M千兆内存($M大约为10)。 所以我想知道是否有一个确定的策略来选择运行效率最高的线程数。

5
纯功能的解决方案能否像当务之急一样干净?
我在Python中有一个练习,如下所示: 多项式作为系数的元组给出,因此幂由索引确定,例如:(9,7,5)表示9 + 7 * x + 5 * x ^ 2 编写一个函数以计算给定x的值 由于我最近从事函数式编程,所以我写了 def evaluate1(poly, x): coeff = 0 power = 1 return reduce(lambda accu,pair : accu + pair[coeff] * x**pair[power], map(lambda x,y:(x,y), poly, range(len(poly))), 0) 我认为这不可读,所以我写了 def evaluate2(poly, x): power = 0 result = 1 return reduce(lambda accu,coeff …

4
在Java中分割定界字符串的最快方法
我正在构建一个在分隔字符串上提供多列排序功能的比较器。我目前使用String类的split方法作为将原始String拆分为标记的首选。 这是将原始String转换为String数组的最佳方法吗?我将对数百万行进行排序,因此我认为方法很重要。 它似乎运行良好并且非常简单,但是不确定Java中是否有更快的方法。 这是我的比较器中排序方式的工作方式: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } 在对各种方法进行基准测试之后,不管您信不信,使用最新版本的Java最快的方法是split方法。您可以在这里下载我完成的比较器:https : //sourceforge.net/projects/multicolumnrowcomparator/

4
存储数据的最有效方法是什么?
我负责重写一些旧的VB代码。我了解它是如何工作的,但是我觉得有一种更有效的方法来完成他们的工作。我只是不知道那是什么。这是一个人为的示例,它在数据需求方面确实与我需要做的相似。 用户必须在GUI中挑选汽车的制造商,制造商,型号和颜色。我有一个很大的文本文件,看起来像这样: Ford Truck F150 red Ford Truck F150 blue Ford Truck F150 black Ford Truck F150 silver Ford Truck F250 red Ford Truck F250 green Ford Sedan Taurus red Ford Sedan Taurus green Ford Sedan Taurus white Ford... ... Subaru SUV Forester blue Subaru SUV Forester red Subaru SUV …

3
计算值和简单阅读-我的域驱动设计困扰人!
我一直面临的问题是如何处理由域逻辑驱动的计算值,同时仍然有效地处理数据存储。 例: 我正在通过服务从存储库返回产品列表。此列表受客户端发送的来自请求DTO的分页信息限制。另外,DTO指定一个排序参数(一个客户端友好的枚举)。 在一个简单的场景中,一切工作都很好:该服务将分页和排序表达式发送到存储库,而存储库向数据库发出有效的查询。 但是,当我需要对通过域模型在内存中生成的值进行排序时,一切都将崩溃。例如,Product类具有一个IsExpired()方法,该方法根据业务逻辑返回布尔值。现在我无法在存储库级别进行排序和分页-所有这些操作都必须在内存中完成(效率低下),并且我的服务必须知道何时向存储库发出这些参数以及何时执行排序/分页的复杂性本身。 在我看来,唯一有意义的模式是将实体的状态存储在db中(将IsExpired()设置为只读字段,并在保存之前通过域逻辑对其进行更新)。如果我将此逻辑分为一个单独的“读取模型/ dto”和“报告”存储库,那么我将使模型变得比我想要的更贫乏。 顺便说一句,我看到的每个这样的计算示例实际上都依赖于内存中的处理和掩盖性,因为它从长远来看效率很低。也许我过早地进行了优化,但这并不适合我。 我很想听听其他人如何处理此问题,因为我敢肯定这在涉及DDD的几乎项目中是很常见的。

9
将大型数据集插入MySQL数据库(或一般任何数据库)的最佳方法是什么
作为PHP项目的一部分,我必须在MySQL数据库中插入一行。我显然已经习惯了,但是这需要在一个查询中插入90列。产生的查询看起来很可怕且整体(特别是将我的PHP变量作为值插入): INSERT INTO mytable (column1, colum2, ..., column90) VALUES ('value1', 'value2', ..., 'value90') 我担心我的做法不正确。键入所有内容也花费了我很长的时间,而我担心编写测试代码的测试同样乏味。 专业人士如何快速编写和测试这些查询?有什么办法可以加快这个过程?
9 php  mysql  efficiency 
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.