Tag: 优化

在Java中增加Map值最有效的方法

我希望这个问题不被视为这个论坛的基础,但我们会看到。 我想知道如何重构一些代码,以获得更好的性能,这是一堆运行。 假设我正在创build一个词频列表,使用一个Map(可能是一个HashMap),其中每个键都是一个string,其中的单词是被计数的,并且该值是一个整数,每次find该单词的一个标记时,该整数就会递增。 在Perl中,增加这样一个值将是非常简单的: $map{$word}++; 但在Java中,它更复杂。 这里我正在做的方式是: int count = map.containsKey(word) ? map.get(word) : 0; map.put(word, count + 1); 当然这依赖于较新的Java版本中的自动装箱function。 我想知道你是否可以提出一个更有效的方式来增加这样的价值。 是否有避免使用Collections框架和使用其他方法的良好性能? 更新:我已经做了几个答案的testing。 见下文。

哪个更好的select用于除以2的整数?

以下哪种技术是将整数除以2的最佳select,为什么? 技术1: x = x >> 1; 技术2: x = x / 2; 这里x是一个整数。

我如何达到每个周期4个FLOP的理论最大值?

如何在现代的x86-64 Intel CPU上实现4个浮点运算(双精度)的理论峰值性能? 据我所知,在大多数现代英特尔CPU上,需要三个周期才能完成SSE add和五个周期的完成(例如参见Agner Fog的“指令表” )。 由于stream水线化,如果algorithm至less有三个独立的求和,每个周期可以获得一个add的吞吐量。 由于对于打包的addpd以及标量addsd版本是正确的,SSE寄存器可以包含两个double ,所以每个周期的吞吐量可以高达两个触发器。 此外,似乎(虽然我还没有看到任何适当的文件) add的和mul可以并行执行,给出了每个周期四个触发器的理论最大吞吐量。 但是,我还没有能够用一个简单的C / C ++程序复制这个性能。 我最好的尝试导致了大约2.7次触发/周期。 如果任何人都可以贡献一个简单的C / C ++或汇编程序来演示高性能,那将是非常感谢。 我的尝试: #include <stdio.h> #include <stdlib.h> #include <math.h> #include <sys/time.h> double stoptime(void) { struct timeval t; gettimeofday(&t,NULL); return (double) t.tv_sec + t.tv_usec/1000000.0; } double addmul(double add, double mul, int ops){ // Need to initialise differently […]

什么是复制elision和返回值优化?

什么是复制elision? 什么是(命名)返回值优化? 他们意味着什么? 在什么情况下可以发生? 什么是限制? 如果你是参考这个问题,你可能正在寻找介绍 。 有关技术概述,请参阅标准参考 。 在这里查看常见情况 。

如何在g ++中使用概要指导优化?

另外,任何人都可以点我一个关于这个问题的好教程? 我找不到任何东西。

Minify ASP.NET应用程序的Html输出

我们可以通过哪种方式来减lessasp.net应用程序发送的HTML响应的大小? 我正在使用不属于我的控件,它使用空格产生输出。 我感兴趣的是如何谷歌如何(查看源代码www.google.com)来缩短整个页面的HTML输出,以提高时间。 有没有可用于ASP.NET的实用工具类,可以为我做这个东西?

密封类真的提供性能好处吗?

我遇到了很多优化提示,说你应该把你的课程标记为密封,以获得额外的性能好处。 我跑了一些testing来检查性能差异,发现没有。 我做错了什么? 我是否错过了密封课程会给更好的结果? 有没有人运行testing,看到了不同? 帮我学习:)

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) 我希望拥有无限制员工types的灵活性,但是在部署的应用程序中,可能只有一个types,所以我想知道是否有一种方法来硬编码id并设置这种关系。 这样,我可以避免数据库调用首先获得EmployeeType对象。

我应该用“if”语句来统一两个类似的内核,冒着性能损失的风险吗?

我有两个非常相似的内核函数,代码几乎相同,但略有不同。 目前我有2个选项: 写2种不同的方法(但非常相似) 编写一个单独的内核,并将不同的代码块放在if / else语句中 if语句会影响我的algorithm性能多less? 我知道没有分支,因为所有块中的所有线程都将进入if或else。 那么如果内核函数被调用了很多次,那么单个if语句是否会降低我的性能呢?

为什么Java API使用int而不是short或byte?

为什么Java API使用int如果short或甚至byte就足够了? 示例: Calendar类中的DAY_OF_WEEK字段使用int 。 如果差异太小,为什么这些数据types(short,int)完全存在?