小编Olh*_*sky的帖子

C#List从结尾删除,真的是O(n)?

我读过几篇文章,声明List.RemoveAt()处于O(n)时间.

如果我这样做:

var myList = new List<int>();

/* Add many ints to the list here. */

// Remove item at end of list:
myList.RemoveAt(myList.Count - 1); // Does this line run in O(n) time?
Run Code Online (Sandbox Code Playgroud)

从列表末尾删除应该是O(1),因为它只需要减少列表计数.

我是否需要编写自己的类来执行此操作,或者删除C#列表末尾的项目是否已在O(1)时间内执行?

c# big-o

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

允许迭代而不产生任何垃圾

我在实现IEnumerable接口的对象池中有以下代码.

public IEnumerable<T> ActiveNodes
{
    get
    {
        for (int i = 0; i < _pool.Count; i++)
        {
            if (_pool[i].AvailableInPool)
            {
                yield return _pool[i];
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知(根据这个问题),这将产生垃圾,因为需要收集IEnumerable对象._pool中的所有元素都不会被收集,因为池的目的是保持对所有元素的引用以防止垃圾创建.

任何人都可以建议一种允许迭代_pool以便不生成垃圾的方法吗?

在池上迭代时,池中的所有项都AvailableInPool == true应该迭代.订单无关紧要.

c# iteration garbage-collection compact-framework

25
推荐指数
3
解决办法
7699
查看次数

尝试运行项目时出错:无法启动程序.找不到指定的文件

这个项目工作正常,然后我重新启动我的电脑安装一个新的GPU,现在它在我尝试运行它时产生以下错误:

Error while trying to run project: Unable to start program:

"E:\Workspace\...\....exe"

Cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

我已确认提到的文件确实存在于错误消息指定的路径中.

我试过"清洁解决方案"和"重建解决方案".

手动导航到可执行文件并运行它.当我按下VS2010中的"运行"按钮时,会产生上述错误.

有谁知道为什么会发生这种情况?

visual-studio-2010

17
推荐指数
2
解决办法
11万
查看次数

C#中继承的性能考虑

如果我使用public int I;(或任何其他字段)创建一个类来创建一个继承自具有的基类的类,编译器是否会生成相同的IL public int I;

无论哪种方式,结果类的行为都相同,但编译器的行为是否相同?

即,编译器只是将代码从基类复制粘贴到派生类中,还是在继承时实际创建了两个不同的类对象?

class A
{
    public int I;
}

class B : A
{
}
Run Code Online (Sandbox Code Playgroud)

现在以下两个DoSomething()调用之间有任何性能差异吗?

var a = new A();
var b = new B();
DoSomething(a.I);
DoSomething(b.I); // Is this line slower than the above line due to inheritance?
Run Code Online (Sandbox Code Playgroud)

尝试忽略编译器可能针对此特殊情况执行的任何优化.我的问题是关于C#中的继承是否具有相关的性能损失.大多数时候我不在乎,但有时我想优化一段高频代码.

c# performance inheritance

10
推荐指数
1
解决办法
1855
查看次数

避免在Prolog绝对值谓词中使用cut

我在prolog中使用以下代码实现了以下功能:

abs2(X, Y) :- X < 0, Y is -X.
abs2(X, X) :- X >= 0, !.
Run Code Online (Sandbox Code Playgroud)

如何在不使用cut("!")的情况下实现此功能?

prolog prolog-cut

6
推荐指数
2
解决办法
2708
查看次数

创建一个python模块

我创建了两个文件:test.pytest1234.py

test.py包含:

import test1234
t = test1234.test()
Run Code Online (Sandbox Code Playgroud)

test1234.py包含:

class test():
    def __init__(self):
Run Code Online (Sandbox Code Playgroud)

当放在同一目录中时,python test.py运行没有错误.

但是,如果我创建一个目录test1234并将test1234.py和一个空的init .py放在此目录中,则会python test.py出现错误:

AttributeError:'module'对象没有属性'test'

我需要做什么才能让test.py能够testtest1234.py中查看该类?

python module

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

查找数组中的和等于零

给定一个整数数组,找到一组至少一个总和为0的整数.

例如,给定[-1, 8, 6, 7, 2, 1, -2, -5],算法可以输出,[-1, 6, 2, -2, -5]因为这是输入数组的子集,其总和为0.

解决方案必须在多项式时间内运行.

algorithm

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

一个简单的prolog语法问题

在SWI-Prolog的用户模式中,我定义了一个函数如下:

|: test1(+X,+Y) :- X >= 0, X =:= Y.
Run Code Online (Sandbox Code Playgroud)

现在处于查询模式:

?- test1(1, 1).
false.
Run Code Online (Sandbox Code Playgroud)

我期望这返回"真",因为1大于0而1等于1.

那我哪里出错了?

prolog

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

Cron工作提前终止

在我的crontab文件中,我执行一个这样的脚本(我使用crontab编辑sudo crontab -e):

01 * * * * bash /etc/m/start.sh
Run Code Online (Sandbox Code Playgroud)

该脚本运行其他一些脚本,如下所示:

sudo bash -c "/etc/m/abc.sh --option=1" &
sleep 2
sudo bash -c "/etc/m/abc.sh --option=2" &
Run Code Online (Sandbox Code Playgroud)

当cron运行脚本时start.sh,我会ps aux | grep abc.sh看到abc.sh脚本正在运行.

几秒钟后,脚本不再运行,即使abc.sh需要几个小时才能完成.

如果我sudo bash /etc/m/start.sh &从命令行执行操作,一切正常(abc.sh脚本在后台运行数小时,直到完成).

我该如何调试?

我正在做的是阻止这些脚本在后台运行,直到它们完成为止?

bash cron

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

计算log_2(n)的最快方法,其中n是2 ^ k的形式?

说我得到n = 32.我想知道log_2(n)是什么.在这种情况下,log_2(32)= 5.

一般来说,计算2 ^ k数的对数的最快方法是什么?

即给定n = 2 ^ k.log_2(n)= b.找到b.

允许按位操作.

c# math bit-manipulation

0
推荐指数
1
解决办法
459
查看次数

pow中较高的指数会减少着色器中的指令?

当我编译HLSL着色器pow(foo, 6)或者pow(foo, 8),编译器创建具有比如果我创建相同的着色器约10多指令集会pow(foo, 9)pow(foo,10)pow(foo,7).

这是为什么?

hlsl

0
推荐指数
1
解决办法
3084
查看次数

尽管调用 help(gridspec) 揭示了 Gridspec 类,但“'module'对象没有属性'Gridspec'”

如果我运行 python 控制台并执行

import matplotlib
matplotlib.__version__
import matplotlib.gridspec as gs
Run Code Online (Sandbox Code Playgroud)

我看到matplotlib版本是1.2.1。

如果我这样做,help(gs)我会看到 Gridspec 类。

然而下面的代码

import matplotlib
import matplotlib.gridspec as gs
g = gs.Gridspec(1,1)
Run Code Online (Sandbox Code Playgroud)

产生错误:

AttributeError: 'module' object has no attribute 'Gridspec'

为什么我无法创建新的 Gridspec 对象?

python matplotlib

-1
推荐指数
1
解决办法
2262
查看次数