问题列表 - 第26296页

Dictionary.Cld的高运行时添加了大量的项目

我有一个C#-Application,它将来自TextFile的数据存储在Dictionary-Object中.要存储的数据量可能相当大,因此插入条目需要花费大量时间.由于内部数组的大小调整存储了Dictionary的数据,因此在Dictionary中有许多项目会变得更糟.因此,我使用将要添加的项目数量初始化词典,但这对速度没有影响.

这是我的功能:

private Dictionary<IdPair, Edge> AddEdgesToExistingNodes(HashSet<NodeConnection> connections)
{
  Dictionary<IdPair, Edge> resultSet = new Dictionary<IdPair, Edge>(connections.Count);

  foreach (NodeConnection con in connections)
  {
    ...
    resultSet.Add(nodeIdPair, newEdge);
  }

  return resultSet;
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我插入~300k项目.我用ANTS Performance Profiler检查了运行时间,发现当我用所需的大小初始化Dictionary时,resultSet.Add(...)的平均时间不会改变.它与我用新的Dictionary()初始化Dictionary时相同; (每次添加平均约0.256毫秒).这肯定是由字典中的数据量引起的(尽管我用所需的大小初始化它).对于前20k项,每个项的Add的平均时间为0.03 ms.

任何想法,如何使添加操作更快?

先谢谢你,弗兰克

这是我的IdPair-Struct:

public struct IdPair
{
  public int id1;
  public int id2;

  public IdPair(int oneId, int anotherId)
  {
    if (oneId > anotherId)
    {
      id1 = anotherId;
      id2 = oneId;
    }
    else if (anotherId > oneId)
    {
      id1 = oneId;
      id2 = anotherId;
    }
    else
      throw new …
Run Code Online (Sandbox Code Playgroud)

c# dictionary

5
推荐指数
2
解决办法
1495
查看次数

Delegate.BeginInvoke和Thread.Start之间的区别

这里现有的相关问题涉及以下方面的差异

  • Delegate.BeginInvoke和Control.BeginInvoke
  • Control.BeginInvoke和Thread.Start

但Delegate.BeginInvoke和Thread.Start之间有什么区别?

.net multithreading

6
推荐指数
1
解决办法
5009
查看次数

如何使用彩色图案剪切图像?

我正在开发一个小程序,用颜色剪切图像.

使用此示例图像最容易解释:

黑色,紫色斑点的颜色

我想用紫色的形状创建一个新的图像,没有黑框.

有没有人有任何想法?我正在使用Java 2D,所以我认为我需要使用第一张图像的紫色区域创建一个对象"Shape".

java image colors shape java-2d

2
推荐指数
1
解决办法
759
查看次数

如何模拟一个类的内部方法?

我有一个具有内部方法的类,我想模拟内部方法.但是我无法模仿它,即它不是调用模拟函数而是调用原始函数.有没有办法实现这个目标?

编辑:其实我是Moq的新手.我有许多类的类和方法来使用Moq进行测试.许多类是内部的,许多具有内部方法,许多具有非虚方法.并且无法更改方法和类的签名.任何人都可以让我知道如何使用Moq测试这个场景.或者请建议我一些易于学习和易于使用的其他测试框架.

.net unit-testing moq

20
推荐指数
3
解决办法
2万
查看次数

强制使用接口而不是声明中的具体实现(.NET)

在C++中,您可以执行以下操作:

class base_class
{
public:
    virtual void do_something() = 0;
};

class derived_class : public base_class
{
private:
    virtual void do_something()
    {
        std::cout << "do_something() called";
    }
};
Run Code Online (Sandbox Code Playgroud)

derived_class覆盖的方法do_something(),并使得它private.结果是,调用此方法的唯一方法是这样的:

base_class *object = new derived_class();
object->do_something();
Run Code Online (Sandbox Code Playgroud)

如果将对象声明为类型derived_class,则无法调用该方法,因为它是私有的:

derived_class *object = new derived_class();
object->do_something(); 
// --> error C2248: '::derived_class::do_something' : cannot access private member declared in class '::derived_class'  
Run Code Online (Sandbox Code Playgroud)

我认为这很好,因为如果你创建一个用作接口的抽象类,你可以确保没有人意外地声明一个字段作为具体类型,但总是使用接口类.

由于在C#/.NET一般来说,你不能缩小从接入publicprivate重载的方法时,有没有办法在这里实现类似的效果?

.net c# c++ inheritance access-modifiers

6
推荐指数
1
解决办法
2100
查看次数

如何使用PHP修改任何文件的时间和大小?

如何使用PHP修改任何文件的时间和大小?

php

5
推荐指数
2
解决办法
3975
查看次数

Rails发现所有关联

我认为这是一个非常简单的问题(着名的遗言)......

我有一个Category模型has_and_belongs_to_many Events.我想构建一个简单而有效的查询,查找具有1个或多个事件的所有类别.(使用Rails 3)

我确定我在这里有一个愚蠢的时刻 - 任何帮助赞赏:)

ruby activerecord ruby-on-rails associations

4
推荐指数
1
解决办法
2002
查看次数

迷失在翻译中 - C#正则表达式使用JavaScript正则表达式

我在将我的工作C#正则表达式转换为JavaScript的正则表达式实现时遇到了一些麻烦.

这是正则表达式:

([a-z]+)((\d+)([a-z]+))?,?
Run Code Online (Sandbox Code Playgroud)

使用时"water2cups,flour4cups,salt2teaspoon"你应该得到:

[
    ["water", "2cups", "2", "cups"]
    ["flout", "4cups", "4", "cups"]
    ["salt", "2teaspoon", "2", "teaspoon"]
]
Run Code Online (Sandbox Code Playgroud)

......确实如此.在C#中.但不是在JavaScript中.

我知道各实现之间存在一些细微差别.为了让这个表达式在JavaScript中工作,我错过了什么?

更新

我正在使用正则表达式:

"water2cups,flour4cups,salt2teaspoon".match(/([a-z]+)((\d+)([a-z]+))?,?/g);
Run Code Online (Sandbox Code Playgroud)

javascript regex

5
推荐指数
1
解决办法
6314
查看次数

2D numpy数组的映射函数

我有一个函数foo,它将NxM numpy数组作为参数并返回标量值.我有一个AxNxM numpy数组data,我想在其上映射foo给我一个长度为A的numpy数组.

当然,我这样做:

result = numpy.array([foo(x) for x in data])
Run Code Online (Sandbox Code Playgroud)

它有效,但似乎我没有利用numpy魔法(和速度).有没有更好的办法?

我看过了numpy.vectorize,numpy.apply_along_axis但是,它们都不适用于2D数组的功能.

编辑:我正在对24x24图像补丁进行增强回归,因此我的AxNxM类似于1000x24x24.我foo上面所说的将一个类似Haar的特性应用于补丁(因此,计算密集程度不是很大).

python numpy

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

如何在jQuery对话框中加载网页?

我正在设计一个wordpress模板,我想使用jQuery ui在单击对话框时显示每个日历链接.

我想要的是,当有人点击wordpress日历中的链接时,内容将加载到对话框中,并显示在日历上.

我会很感激这方面的任何帮助,而不是提前!

html wordpress jquery jquery-ui

2
推荐指数
1
解决办法
1368
查看次数