使用javascript占用尽可能多的CPU的最佳方式是什么?

使用javascript占用尽可能多的CPU的最佳方式是什么?,javascript,Javascript,我正在为我的一个朋友写一个网站,作为一个笑话,我希望一个页面上有尽可能多的使用CPU的javascript。javascript实际上不需要做任何事情,只需要让计算机在页面上运行时尽可能地慢。最好的方法是什么 只要一个简单的无限循环就能创造奇迹。除此之外,您还可以拆分一些web工作人员,他们也可以执行相同的操作: 如果设置x=0n这将占用更多内存(因为大整数允许更大的数字和更多内存) 请记住,默认情况下,网站只使用1个CPU线程。因此,为什么web工作人员阻止更多线程是好的: 您还可以在循环或

我正在为我的一个朋友写一个网站,作为一个笑话,我希望一个页面上有尽可能多的使用CPU的javascript。javascript实际上不需要做任何事情,只需要让计算机在页面上运行时尽可能地慢。最好的方法是什么

只要一个简单的无限循环就能创造奇迹。除此之外,您还可以拆分一些web工作人员,他们也可以执行相同的操作:

如果设置
x=0n
这将占用更多内存(因为大整数允许更大的数字和更多内存)

请记住,默认情况下,网站只使用1个CPU线程。因此,为什么web工作人员阻止更多线程是好的:

您还可以在循环或其他内容中添加setInterval/setTimeout,以使浏览器有时间重新绘制以响应,如果您希望更好地隐藏它,以防止浏览器提示结束无响应的页面

<>编辑:您可能需要考虑添加一些实际的IO任务(尤其是硬盘驱动器)来真正地慢下来。

如果我没记错的话,曾经有一个bug被滥用,它将几乎无限多个0字节的文件下载到主机上,使主机崩溃


这将占用CPU的时间少于初始无限循环,但会使页面响应足够快,浏览器不会提示终止脚本

const wait = () => new Promise((res) => setTimeout(() => res(), 0));
async function timeWaster() {
  let x = 0n;
  while (true) {
    x++;
    if (x % 10000000n === 0n) {
      await wait();
    }
  }
}
timeWaster()

现代浏览器将停止(或提示停止)非慢速终止执行。现在,将它走私到stacking setTimeout(和web workers)中,这样每次执行“只运行一点点”,而集体执行“一直”运行。这需要一点时间,但应该足够长,可以让恶作剧上演,我希望:)
const wait = () => new Promise((res) => setTimeout(() => res(), 0));
async function timeWaster() {
  let x = 0n;
  while (true) {
    x++;
    if (x % 10000000n === 0n) {
      await wait();
    }
  }
}
timeWaster()