我正在编写一些代码,其中作为参数传入的函数有时可能未定义.我很好奇这是一个糟糕的"练习",我想知道什么实际上更快?给一个空函数,或者让函数检查参数是否未定义?
我做了以下测试试试.答案非常令人惊讶!
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) 这是比较,以表明我确实正确地设置了SSAO.
带有EffectsComposer + SSAO的WebGLRenderer传递

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) 我的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)吗?如何设置它?