阵列中的采样值具有良好的性能
sampling values in array with good performance
我有一个函数,它接受一个值数组和采样率。函数应按采样率随机删除值。例如,20%的采样率应该去除20%的值。我如何才能以非常好的性能实现这一点,因为我将迭代超过10000个值?
我的想法有点像
for(var i = values.length-1; i >= 0; i--){
var rnd = Math.floor((Math.random() * 100) + 1);
if(rnd < samplingRate)
values.splice(i,1);
}
但我认为CCD_ 1函数不是性能选择。
如果只想对整个数组的20%进行操作,那么实际上没有必要对其进行迭代。
循环n次,其中n = Math.floor(0.20 * originalArray.length) - 1
和每次迭代从数组中获取一个随机元素并将其移除。
除非您需要支持较旧的浏览器,否则请使用.filter()
方法:
var samplingPercentage = samplingRate / 100;
var filtered = values.filter(function() {
return Math.random() < samplingPercentage;
});
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- 使用正则表达式评估电子邮件地址时出现性能问题
- React:按键的性能提升
- 在Three.js中导出网格会提高性能吗
- 在javascript中搜索项目列表的性能
- 为什么在许多浏览器中drawImage()的性能略好于createPattern()
- JavaScript数组优化以提高性能
- React+Redux性能优化与组件ShouldUpdate
- 在循环中附加事件处理程序时出现浏览器性能问题
- JavaScript-===vs===运算符性能
- 超时功能的性能
- Pg承诺性能提升:在冲突中
- immutable.js与嵌套映射/对象的比较/相等性能
- Javascript-分层采样
- NodeJ中的注释会影响性能吗
- 如果条件为循环-性能差异
- <脚本类型=“;模块“>负载性能
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 阵列中的采样值具有良好的性能