我正在尝试使用Node.js构建整个Web应用程序.是否存在类似于(例如)Django模板引擎等的模板引擎,至少允许您扩展基本模板?
我试图比较内联汇编语言和C++代码的性能,所以我写了一个函数,添加两个大小为2000的数组,持续100000次.这是代码:
#define TIMES 100000
void calcuC(int *x,int *y,int length)
{
for(int i = 0; i < TIMES; i++)
{
for(int j = 0; j < length; j++)
x[j] += y[j];
}
}
void calcuAsm(int *x,int *y,int lengthOfArray)
{
__asm
{
mov edi,TIMES
start:
mov esi,0
mov ecx,lengthOfArray
label:
mov edx,x
push edx
mov eax,DWORD PTR [edx + esi*4]
mov edx,y
mov ebx,DWORD PTR [edx + esi*4]
add eax,ebx
pop edx
mov [edx + esi*4],eax
inc esi
loop label
dec edi …Run Code Online (Sandbox Code Playgroud) 我对那里的所有核心低级黑客都有疑问.我在博客中遇到了这句话.我并不认为这些来源很重要(如果你真的在意,那就是Haack),因为它似乎是一个常见的陈述.
例如,许多现代3D游戏都有他们用C++和Assembly编写的高性能核心引擎.
就程序集而言 - 是用汇编编写的代码,因为你不希望编译器发出额外的指令或使用过多的字节,或者你使用的是更好的算法,你无法在C中表达(或者没有表达编译器把它们搞砸了)?
我完全明白了解低级别的东西很重要.我只想在你理解它之后理解为什么程序在汇编.
看起来,除了开发设备驱动程序或OS内核的核心等以外,现在没有人使用程序集.任何人都知道它目前用于其他事情吗?
我的意思是PC风格和更大的硬件,而不是嵌入微小处理器的东西.
我正在寻找一个适用于Python的好的程序集生成模块。我发现了这个: PyAsm
但是效果不好。我想执行并生成程序集可执行文件,以进行简单的操作,例如加,减,除和乘。诸如.NET中的Reflection.Emit库之类的东西。
我正在Linux(Ubuntu 12.10 64bit)和Python2.7下进行开发。
例如,当我尝试使用PyAsm编译此简单的子代码时,它给我一个“分段错误(内核已转储)”:
from ctypes import c_int
from pyasm import Program
from pyasm.instructions import push, mov, ret, pop, sub
from pyasm.registers import eax, esp, ebp
def test():
prog = Program(
push(ebp),
mov(ebp, esp),
mov(eax, ebp.addr+8),
sub(eax, 10),
pop(ebp),
ret(),
)
fun = prog.compile(c_int, [c_int])
assert fun(1234) == 1224
if __name__ == '__main__':
test()
Run Code Online (Sandbox Code Playgroud) assembly ×4
c ×2
performance ×2
c++ ×1
emit ×1
javascript ×1
low-level ×1
node.js ×1
python ×1
x86 ×1