IT技术博客大学习 共学习 共进步

标签:循环

共 11 篇相关文章

IT 浏览 0

嵌入主线程消息循环的任务调度器

这篇文章记录了 soluna/ltask 在移植到 wasm 和非 Windows 平台过程中遇到的一个典型工程难题:如何在主线程事件循环中执行特定任务,同时仍保留原有多线程调度模型。 问题的核心来自图形 API 和平台约束。sokol 并非线程安全,OpenGL 又依赖当前线程状态,而 wasm 环境下主线程、worker、pthread API 的边界进一步放大了调度复杂度。 作者的解决思路不是重写整个调度器,而是在 ltask 中“打洞”:让某些必须在主线程回调中执行的 Lua 任务,临时从调度表中移出,由主线程接管执行,完成后再归还给调度器。 文章最有价值的地方,是把 coroutine、Lua 虚拟机、C 栈、主线程事件循环和图形 API 约束放在同一个工程场景中分析。它不适合泛泛阅读,但对做游戏引擎、wasm 移植或复杂运行时调度的开发者很有参考价值。

IT 浏览 2,660

JavaScript优化循环

循環是所有編程語言中最爲重要的機制之一,幾乎任何擁有實際意義的計算機程序(排序、查詢等)都裏不開循環。而循環也正是程序優化中非常讓人頭疼的一環,我們往往需要不斷去優化程序的複雜度,卻因循環而糾結在時間複雜度和空間複雜度之間的抉擇。

IT 浏览 5,380

for 循环为何可恨?

Java的闭包(Closure)特征最近成为了一个热门话题。一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。 不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。尤其是他问道“ for 循环为何可恨?”: 我不知道,有些人这么着急的要把 for 循环消灭掉,他们反对的究竟是什么?这已经不是第一次或第二次计算机学界的理论家们起来反对 for 循环(或类似的东西)了。 如果只说Elliotte质疑不起眼的闭包的价值,这是不公平的。

IT 浏览 2,640

Perl6有用的和有意思的循环

我们常使用的任何语言,我们都知道循环非常的有用,在语言提供这些功能,我们常用象 foreach 之类的循环来从数组或者列表的开始到结束。在 Perl 5 中,提供了 foreach 的关键字,当然 你也能...

IT 浏览 5,420

循环、迭代、遍历和递归

本想先找本算法和数据结构的书参考一下,但转念一想:不如考考自己的总结和逻辑表达能力。 loop、iterate、traversal和recursion这几个词是计算机技术书中经常会出现的几个词汇。众所周知,这几个词分别翻译为:循环、迭代、遍历和递归。乍一看,这几个词好像都与重复(repeat)有关,但有的又好像不完全是重复的意思。那么这几个词到底各是什么含义,有什么区别和联系呢?下面就试着解释一下。 循环(loop),指的是在满足条件的...

IT 浏览 3,360

数组的优化循环展开与分割

数组的循环与分割, 利用了计算机系统的两个特点: 1. 有多块高速缓存; 2. Cpu是可以多指令并行执行(要求多条指令之间 没有数据相关性)。 在我们的例子中: 数组切分: 将1个数组切分为2个数组。 这样就能用2块高速缓存来存数据 , 高速缓存的访问速度是内存的 10倍以上 循环展开: 我们将的步进设置为4,每次处理的数据之间 没有任何关系,这样就能并行执行起来。 数据无关性: 就是下一次计算指令不受之前执行指令的结果影响。在我...

IT 浏览 9,360

在C++中实现foreach循环,比for_each更简洁!

python,c#,java里面都有类似于foreach的结构,stl里面虽然有for_each这个函数,但是感觉使用还是太繁琐了一些,所以就自己实现了一个。 先来看看stl里面的for_each函数,官方文档上的原型如下: 1 Fun...

IT 浏览 3,560

优化次数过多的循环

假设要生成一千万个随机数,常规的做法如下: var numbers = []; for (var i = 0; i < 10000000; i++) {   numbers.push(Math.random()); } 然而,在IE下执行这段代码时,却弹出了一个窗口提示用户是否停止这段脚本。出现这种情况,首先想到的是优化循环体。但明显地,循环体很简单,没什么优化的余地。即使把循环体清空,提示仍然存在。于是,我得出了一个结论:在IE下,一旦循环次数超过了某个特定值,就会弹出停止脚本的提示...

IT 浏览 3,400

Loop Benchmarks

循环语句有各种写法,哪种效率最高呢?测试页面:loop-test.html 结论: 效率很差的几个方式:arr.forEach 遍历(原生也慢),for in 遍历, arr.pop() 判断,arr[i] 判断。这些写法或许很酷很精简,但对性能有要求时,最好避免使用。多测试几十次,看统计平均结果,在 Firefox 下:++i < i++ < i = i + 1 < i += 1. 原因可以回溯到汇编语言。当然,这更多是编码习惯问题,对性能的影响可以忽略不计。推荐采用最常用...