标签: performance

在迭代2D数组时,为什么循环的顺序会影响性能?

可能重复:
这两个for循环中的哪一个在时间和缓存性能方面更有效

下面是两个几乎相同的程序,除了我切换ij变量.它们都运行在不同的时间.有人能解释为什么会这样吗?

版本1

#include <stdio.h>
#include <stdlib.h>

main () {
  int i,j;
  static int x[4000][4000];
  for (i = 0; i < 4000; i++) {
    for (j = 0; j < 4000; j++) {
      x[j][i] = i + j; }
  }
}
Run Code Online (Sandbox Code Playgroud)

版本2

#include <stdio.h>
#include <stdlib.h>

main () {
  int i,j;
  static int x[4000][4000];
  for (j = 0; j < 4000; j++) {
     for (i = 0; i < 4000; i++) {
       x[j][i] = i …
Run Code Online (Sandbox Code Playgroud)

c optimization performance for-loop cpu-cache

350
推荐指数
6
解决办法
4万
查看次数

在普通键的情况下使用map over unordered_map有什么好处吗?

最近unordered_map在C++中的讨论使我意识到,我应该使用之前使用unordered_map过的大多数情况map,因为查找的效率(摊销的O(1)O(log n)).大多数时候我使用的地图我使用intstd::string作为键,因此我对哈希函数的定义没有任何问题.我越是想到它,我就越发现我发现std::map在一个简单类型的情况下我找不到任何理由std::unordered_map- 我看了一下界面,并没有发现任何显着的差异会影响我的代码.

因此,这个问题-有没有使用任何真正的原因std::mapstd::unordered map简单类型一样的情况下,intstd::string

我从一个严格的编程角度问我 - 我知道它没有被完全认为是标准的,并且它可能会带来移植问题.

另外我希望正确的答案之一可能是"它对于较小的数据集更有效",因为开销较小(是真的吗?) - 因此我想将问题限制在密钥数量的情况下是非平凡的(> 1 024).

编辑: 呃,我忘记了显而易见的(感谢GMan!) - 是的,地图是当然有序的 - 我知道,我正在寻找其他原因.

c++ performance dictionary unordered-map

346
推荐指数
12
解决办法
18万
查看次数

"else if"是否比"switch()case"更快?

可能重复:
在C#中使用if/else和switch-case之间是否有任何显着差异?

我是前Pascal人,目前正在学习C#.我的问题如下:

下面的代码比开关更快吗?

int a = 5;

if (a == 1)
{
    ....
}
else if(a == 2)
{
    ....
}
else if(a == 3)
{
    ....
}
else if(a == 4)
{
    ....
}
else
    ....
Run Code Online (Sandbox Code Playgroud)

和开关:

int a = 5;

switch(a)
{
    case 1:
        ...
        break;

    case 2:
        ...
        break;

    case 3:
        ...
        break;

    case 4:
        ...
        break;

    default:
        ...
        break;


}
Run Code Online (Sandbox Code Playgroud)

哪一个更快?

我问,因为我的程序有类似的结构(许多很多"其他如果"语句).我应该把它们变成开关吗?

c# performance if-statement switch-statement

344
推荐指数
11
解决办法
34万
查看次数

何时以及为什么数据库加入昂贵?

我正在研究数据库,我正在研究关系数据库的一些局限性.

我得到大桌子的连接是非常昂贵的,但我不完全确定为什么.DBMS需要做什么才能执行连接操作,瓶颈在哪里?
非规范化如何帮助克服这种费用?其他优化技术(例如索引)如何帮助?

欢迎个人经历!如果您要发布资源链接,请避免使用Wikipedia.我知道在哪里找到它.

与此相关,我想知道云服务数据库(如BigTable和SimpleDB)使用的非规范化方法.看到这个问题.

database performance join denormalization relational-database

343
推荐指数
4
解决办法
7万
查看次数


何时在Java中使用StringBuilder

通常认为StringBuilder在Java中使用字符串连接通常是优选的.总是这样吗?

我的意思是:创建一个StringBuilder对象的开销,调用append()方法,最后toString()已经小了,然后将现有的字符串与+运算符连接两个字符串,或者只建议更多(超过两个)字符串?

如果有这样的阈值,它依赖于什么(可能是字符串长度,但以哪种方式)?

最后,您是否会交换+串联的可读性和简洁性,以便StringBuilder在较小的情况下(如两个,三个或四个字符串)的性能?

StringBuilder过时的Java优化技巧以及Java都市神话中,人们提到明确使用常规连接已经过时了.

java string performance

341
推荐指数
6
解决办法
27万
查看次数

Java中的数组或列表.哪个更快?

我必须在内存中保留数千个字符串,以便在Java中以串行方式访问.我应该将它们存储在数组中还是应该使用某种List?

由于数组将所有数据保存在连续的内存块中(与Lists不同),使用数组存储数千个字符串会导致问题吗?

java arrays performance list

339
推荐指数
15
解决办法
25万
查看次数

处理可能多次枚举IEnumerable的警告

在我的代码中需要使用IEnumerable<>几次因此得到Resharper错误"可能的多个枚举IEnumerable".

示例代码:

public List<object> Foo(IEnumerable<object> objects)
{
    if (objects == null || !objects.Any())
        throw new ArgumentException();

    var firstObject = objects.First();
    var list = DoSomeThing(firstObject);        
    var secondList = DoSomeThingElse(objects);
    list.AddRange(secondList);

    return list;
}
Run Code Online (Sandbox Code Playgroud)
  • 我可以更改objects参数List,然后避免可能的多次枚举,但后来我没有得到我能处理的最高对象.
  • 我可以做的另一件事是将转换IEnumerableList在方法的开头:

 public List<object> Foo(IEnumerable<object> objects)
 {
    var objectList = objects.ToList();
    // ...
 }
Run Code Online (Sandbox Code Playgroud)

但这只是尴尬.

在这种情况下你会做什么?

.net c# resharper performance

339
推荐指数
4
解决办法
12万
查看次数

PHP函数的Big-O列表

在使用PHP一段时间后,我注意到并非所有PHP内置函数都如预期的那样快.考虑下面两个可能的函数实现,它使用缓存的素数数组来查找数字是否为素数.

//very slow for large $prime_array
$prime_array = array( 2, 3, 5, 7, 11, 13, .... 104729, ... );
$result_array = array();
foreach( $prime_array => $number ) {
    $result_array[$number] = in_array( $number, $large_prime_array );
}

//speed is much less dependent on size of $prime_array, and runs much faster.
$prime_array => array( 2 => NULL, 3 => NULL, 5 => NULL, 7 => NULL,
                       11 => NULL, 13 => NULL, .... 104729 => NULL, ... );
foreach( $prime_array => $number ) …
Run Code Online (Sandbox Code Playgroud)

php arrays algorithm performance big-o

332
推荐指数
3
解决办法
7万
查看次数

如何获取查询执行计划?

在Microsoft SQL Server中,如何获取查询/存储过程的查询执行计划?

sql t-sql sql-server performance sql-execution-plan

331
推荐指数
10
解决办法
40万
查看次数