小编zil*_*n01的帖子

PHP的substr效率如何?

我正在用PHP编写一个解析器,它必须能够处理大型内存中的字符串,所以这是一个有点重要的问题.(请不要"过早优化"火焰我,请)

substr功能如何运作?它是否在内存中生成字符串数据的第二个副本,还是引用原始数据?我应该担心,例如,$str = substr($str, 1);在循环中调用吗?

php optimization memory-management substr

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

C#方法多态性与泛型的性能

我注意到在C#中,与C++不同,您可以组合虚拟和通用方法.例如:

using System.Diagnostics;

class Base {
    public virtual void Concrete() {Debug.WriteLine("base concrete");}
    public virtual void Generic<T>() {Debug.WriteLine("base generic");}
}

class Derived : Base {
    public override void Concrete() {Debug.WriteLine("derived concrete");}
    public override void Generic<T>() {Debug.WriteLine("derived generic");}
}

class App {
    static void Main() {
        Base x = new Derived();
        x.Concrete();
        x.Generic<PerformanceCounter>();
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到任意数量的版本Generic<T>可以被实例化,它看起来并不像标准vtbl的方法可以用于解决方法调用,实际上它不是.这是生成的代码:

        x.Concrete();
mov         ecx,dword ptr [ebp-8] 
mov         eax,dword ptr [ecx] 
call        dword ptr [eax+38h] 
        x.Generic<PerformanceCounter>();
push        989A38h 
mov         ecx,dword ptr [ebp-8] 
mov         edx,989914h …
Run Code Online (Sandbox Code Playgroud)

c# generics polymorphism performance

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

在D中的const vs enum

这里查看此引用,页面底部.(我相信引用的关于consts的评论也适用于invariants)

枚举与consts的不同之处在于它们不消耗最终输出对象/库/可执行文件中的任何空间,而consts则不会.

因此显然value1会使可执行文件膨胀,而value2被视为文字并且不会出现在目标文件中.

const int value1 = 0xBAD;
enum int value2 = 42;
Run Code Online (Sandbox Code Playgroud)

回到C++我总是认为这是出于遗留原因,以及无法优化常数的旧编译器.但如果在D中仍然如此,那么必然会有更深层次的原因.谁知道为什么?

optimization enums d const

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

在J2ME中将缓冲区旋转到播放器的替代方法?

由于许多J2ME手机的(非常烦人)限制,音频文件在完全下载之前无法播放.因此,为了播放实时流,我不得不一次下载块,并构建ByteArrayInputStreams,然后我将其提供给玩家.

这很有效,除了每次流结束时需要大约1/4秒的烦人间隙并且需要新的间隙.有没有办法解决这个问题,或上面的问题?

java streaming mmapi java-me

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

是否有任何理由打开具有共享写入访问权限的文件?

我总是以两种方式打开文件——读取访问和共享读取,或者读/写访问但不共享。

在我看来,允许共享写入总是会导致您在读取文件时发生意外的事情。有什么充分的理由以共享写入模式打开文件吗?

file-io file-sharing file-access

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

如何确定链接资源是否成功加载

我正在使用以下JavaScript来动态加载样式表:

function set_stylesheet(name) {
    var link = document.getElementById('userstylelink');
    link.href = link.href.replace(/[^\/]+\.css$/, name + '.css');
}
Run Code Online (Sandbox Code Playgroud)

有没有办法确定是否成功加载了新的CSS文件?如果失败,我希望能够应用默认样式表.

javascript

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

如何深度克隆C#中的互连对象?

深度克隆一组互连对象的最佳方法是什么?例:

class A {
    B theB; // optional
    // ...
}

class B {
    A theA; // optional
    // ...
}

class Container {
    A[] a;
    B[] b;
}
Run Code Online (Sandbox Code Playgroud)

显而易见的事情就是走向对象并深入克隆一切,因为我来到它.然而,这会产生一个问题 - 如果我克隆一个A包含a 的那个B,并且它B也在Container那里,B那么克隆后我将克隆两次Container.

下一个逻辑步骤是Dictionary在克隆之前创建并查找每个对象.然而,这似乎可能是一个缓慢而无法解决的问题.

有什么想法吗?

c# clone

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

微软的CodeView格式规范

我一直在寻找一份名为CodeView Symbolic Debug Information Specification的1990年代的Microsoft文档.它在PE/COFF规范中引用了它.关于这个文档的信息是稀疏的,我遇到的每个线索都以404结尾.不幸的是我没有任何旧的MSDN CD,这似乎结束了对少数人的搜索.

有没有人有副本,或知道我在哪里可以找到任何相关的规格?

debugging msdn specifications code-view

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

三角数的大O表示法?

对于在三角时间运行的算法,正确的大O表示法是什么?这是一个例子:

func(x):
  for i in 0..x
    for j in 0..i
      do_something(i, j)
Run Code Online (Sandbox Code Playgroud)

我的第一直觉是O(n²),但我不完全确定.

big-o

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

检索MySQL表注释的最优雅方法是什么?

我正在尝试以编程方式检索MySQL表的注释.向我建议的第一种方法是:

$shown = $db->query('show create table ' . TABLE_NAME)->fetch_row();
preg_match("/COMMENT='(.*)'/", $shown[0], $m);
$comment = $m[1];
Run Code Online (Sandbox Code Playgroud)

但这种解决方法让我感到畏缩.我偶然发现了另一种方式:

$result = $db->query("select table_comment from information_schema.tables where table_schema = '" .
    DATABASE_NAME . "' and table_name = '" TABLE_NAME '\'')->fetch_row();
$comment = $result[0];
Run Code Online (Sandbox Code Playgroud)

它有点好(没有字符串解析),但它仍然让我感到不舒服,因为我正在挖掘内部结构,我不觉得自己属于.

有没有一个很好的,简单的方法来获取代码中的表注释?

php mysql schema

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