小编Flu*_*lux的帖子

什么更快?运行空函数或检查函数是否未定义?

我正在编写一些代码,其中作为参数传入的函数有时可能未定义.我很好奇这是一个糟糕的"练习",我想知道什么实际上更快?给一个空函数,或者让函数检查参数是否未定义?

我做了以下测试试试.答案非常令人惊讶!

var timesTest = 1000;

function empty(){}
console.time('running an empty function');
for( var i=0; i<timesTest; i++ ){
  empty();
}
console.timeEnd('running an empty function');

var somethingthatdoesnotexist;
console.time('checking if a function exists');
for( var i=0; i<timesTest; i++ ){
  if( somethingthatdoesnotexist ){
    somethingthatdoesnotexist();
  }
}
console.timeEnd('checking if a function exists');

// results:
// running an empty function: 0.103ms
// checking if a function exists: 0.036ms
Run Code Online (Sandbox Code Playgroud)

在较低的数字,检查未定义的参数要快得多.

一旦测试时间增加,事情就会变得有趣.

// var timesTest = 100000;
// results:
// running an empty function: 1.125ms
// checking …
Run Code Online (Sandbox Code Playgroud)

javascript optimization performance function undefined

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

获取WebGLDeferredRenderer与SSAO一起使用

这是比较,以表明我确实正确地设置了SSAO.

带有EffectsComposer + SSAO的WebGLRenderer传递 带有EffectsComposer + SSAO的WebGLRenderer传递

WebGLDeferredRenderer与SSAO通过 WebGLDeferredRenderer与SSAO通过

我正在尝试将WebGLDeferredRenderer与SSAO composer效果混合在一起,如下所示:

renderer = new THREE.WebGLDeferredRenderer({
  antialias: true,
  tonemapping: THREE.FilmicOperator,
  brightness: 2.5,
  scale: 1.0,
  width: renderWidth,
  height: renderHeight
});

var depthShader = THREE.ShaderLib[ "depthRGBA" ];
var depthUniforms = THREE.UniformsUtils.clone( depthShader.uniforms );

depthMaterial = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms } );
depthMaterial.blending = THREE.NoBlending;

composer = new THREE.EffectComposer( renderer );
composer.setSize( window.innerWidth, window.innerHeight );

depthTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, {
  minFilter: THREE.NearestFilter,
  magFilter: THREE.NearestFilter,
  format: THREE.RGBAFormat,
  antialias: true
});

var ssao …
Run Code Online (Sandbox Code Playgroud)

three.js

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

VSCode终端+ Git Bash"命令未找到"任何命令

我的settings.json很简单,它用sh.exe替换cmd.exe(来自git).

{
    "terminal.integrated.shell.windows": "C:\\Program Files (x86)\\Git\\bin\\sh.exe"
}
Run Code Online (Sandbox Code Playgroud)

打开外壳后,绝对没有任何作用.我甚至不能.

sh.exe"-3.1$ ls
sh.exe": ls: command not found
sh.exe"-3.1$ cd ..
sh.exe"-3.1$ ls
sh.exe": ls: command not found
sh.exe"-3.1$
Run Code Online (Sandbox Code Playgroud)

VSCode不适用于Mingw32(git的bash)吗?如何设置它?

visual-studio-code vscode-settings

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