小编Jas*_*ers的帖子

哪个循环有更好的性能?为什么?

String s = "";
for(i=0;i<....){
    s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)

要么

for(i=0;i<..){
    String s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)

我不需要再次在循环外使用's'了.第一个选项可能更好,因为每次都不会初始化新的String.然而,第二个将导致变量的范围限于循环本身.

编辑:回应Milhous的回答.将String分配给循环中的常量是没有意义的吗?不,这里'一些分配'意味着从迭代的列表中获得的变化值.

此外,问题不是因为我担心内存管理.只是想知道哪个更好.

java string performance garbage-collection

50
推荐指数
4
解决办法
8134
查看次数

SIMD编程语言

在过去的几年里,我一直在做很多SIMD编程,大多数时候我一直依赖于编译器内部函数(例如用于SSE编程的函数)或编程汇编来实现真正的俏皮东西.但是,到目前为止,我几乎找不到任何内置支持SIMD的编程语言.

现在显然有一些着色器语言,如HLSL,Cg和GLSL,它们对这种东西有本机支持,但是,我正在寻找能够至少在没有自动向量化的情况下编译到SSE但内置支持向量操作的东西.这种语言存在吗?

这是(部分)Cg着色器的一个例子,它做了一个聚光灯,在语法方面,这可能是我最接近我正在寻找的.

float4 pixelfunction(
    output_vs IN, 
    uniform sampler2D texture : TEX0, 
    uniform sampler2D normals : TEX1, 
    uniform float3 light, 
    uniform float3 eye ) : COLOR
{
    float4 color    = tex2D( texture, IN.uv );
    float4 normal   = tex2D( normals, IN.uv ) * 2 - 1;

    float3 T = normalize(IN.T);
    float3 B = normalize(IN.B);

    float3 N = 
        normal.b * normalize(IN.normal) +
        normal.r * T +
        normal.g * B;

    float3 V = normalize(eye - IN.pos.xyz);
    float3 L = normalize(light - IN.pos);
    float3 …
Run Code Online (Sandbox Code Playgroud)

programming-languages sse simd ispc

11
推荐指数
3
解决办法
3300
查看次数