Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与OneNote相比,HTML5画布上的书写速度更快_Javascript_Html_Canvas - Fatal编程技术网

Javascript 与OneNote相比,HTML5画布上的书写速度更快

Javascript 与OneNote相比,HTML5画布上的书写速度更快,javascript,html,canvas,Javascript,Html,Canvas,使用诸如或之类的库在HTML画布上使用手写笔绘图比在OneNote上绘图慢得多,这有什么根本原因吗?这似乎是一个昼夜的差异,我试图找出这是javascript、浏览器或其他东西的限制 是否有人知道上述解决方案是否在最高性能水平下工作?如果是这样,为什么theshold与OneNote不同 编辑:OneNote的桌面版浏览器是事件驱动的。这意味着会发生以下情况:输入>处理输入>绘制到画布>绘制到屏幕。浏览器锁定为60FPS,因此输入最多可在以下帧后进行:输入(0ms)>处理>绘制>绘制(16ms)

使用诸如或之类的库在HTML画布上使用手写笔绘图比在OneNote上绘图慢得多,这有什么根本原因吗?这似乎是一个昼夜的差异,我试图找出这是javascript、浏览器或其他东西的限制

是否有人知道上述解决方案是否在最高性能水平下工作?如果是这样,为什么theshold与OneNote不同


编辑:OneNote的桌面版浏览器是事件驱动的。这意味着会发生以下情况:输入>处理输入>绘制到画布>绘制到屏幕。浏览器锁定为60FPS,因此输入最多可在以下帧后进行:输入(0ms)>处理>绘制>绘制(16ms)。此外,如果处理或绘制步骤缓慢,则可能会出现延迟

桌面应用程序不一定限制在60FPS,它们可以随时直接绘制到屏幕上。因此循环可以更像:输入>绘制


这些都是高级别的,但这些都是可能导致输入和输出之间出现延迟的因素。

您指的是桌面OneNote程序还是基于web的OneNote应用程序?桌面版本事件与屏幕刷新率无关,js亦然。只有绘画是如此,但桌面应用程序也是如此(它们很难改变屏幕刷新率的硬件限制)。所以真正发生的是循环1:[事件=>处理(=>绘制到画布)](最大(输入设备速率,处理时间))|循环2:绘制(60fps)。因此,一种常见的技术是在loop2中包含=>draw to canvas,以避免通过多次执行只显示一次的操作而导致处理时间过长。实际上,在大多数现代浏览器中,(我测试的所有)事件由不同于执行js的线程处理,这意味着,即使您冻结了页面,事件仍然会被存储,并在浏览器可以启动时进行处理。所以这将是第1阶段:[事件=>UA处理](最大速率=输入设备速率)第2阶段:[js处理(=>draw to canvas)](处理时间)第3阶段:绘制(最大速率=60fps)。@Kaido:听起来对我来说不错。我确实知道这些东西,但我想保持它的简单性和高层次性(从他们的帖子中,我不确定OP对它的工作原理有多深入)。不过,你应该把它写进一个答案中;也许会选择它。不,这并不能解释为什么这些LIB速度较慢。因此,是的,它们的水平更高,但如今,它在一个简单的应用程序上几乎没有什么区别,比如听输入并画一个圆圈;我不认为他们会接受输入最大速率限制,除非他们写得很糟糕,我不知道,也不想这样。我们不知道OP试图用它做什么,也不知道调用了什么代码。它可能是JS LIBS,可能是JS在浏览器中运行的事实,这使得它难以匹配C++的效率,它可能是DOM问题,OP可以尝试通过笔画渲染蒙娜丽莎笔划。它可以是任何数量的东西。我认为这是一个无法回答的问题。我只是想试着让他们知道其中有什么。