问题标签 [buffered]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - java脚本绘制到缓冲图像中
我想将位图绘制到缓冲区中并使用 javascript 创建位图。理想情况下,我应该通过绘制线条、矩形和类似的东西来创建位图,并在需要时绘制到屏幕上。感谢您回复并提供一些代码提示。
问候
java - 从 Android 通过套接字发送缓冲数据
我开发了允许通过网络广播视频流的 Android 应用程序的第一部分。目前,我正在以非常直接的方式发送视频,如下所示:
但不幸的是,它不是很流畅。我想在通过套接字发送数据流之前对其进行缓冲。我尝试的一种方法是使用用于记录媒体的 Android API将流写入文件,并使用另一个线程将文件流式传输到计算机上的服务器。
所以我的问题是:如何通过套接字发送仍在写入的文件?由于BufferedInputStream没有用于读取的阻塞方法,我尝试做这样的事情,但没有任何成功
但是当我这样做时,如果网络比数据流快,我很快就会脱离循环。
有没有“好”的方法来做到这一点?我想进行主动等待,但这不是一个好的解决方案,尤其是对于手机。另一种方法是做这样的事情:
但这对我来说听起来很脏……有更时尚的解决方案吗?
c++ - 在 C++ 缓冲输出中避免 memcpy
我正在尝试直接写入 fstream 输出缓冲区以避免memcpy
.
为什么下面的代码不起作用?
它在 Linux 上编译、运行并生成正确长度的输出文件。但输出文件不包含正确的文本。另请注意,由于某种原因,当我注释掉涉及 的两行时str2
,会生成一个长度为零的输出文件。
注意:这个例子没有避免memcpy
,但如果它有效,它将帮助我memcpy
在我的应用程序中避免 a 。
java - Java 应用程序有 10% 的时间中断
我有一个使用 2400x1800 缓冲图像的应用程序(我知道这需要大量资源),但它在 90% 以上的时间里都能完美运行。占用 130 mb 的 RAM 并使用 5% 的 CPU。
问题是,在 10% 的情况下,它有很大的延迟,只消耗 40 到 50 mb RAM 并使用 50% 的 CPU。为什么它不吃同样的记忆?
我知道我应该发布一些代码,但是该应用程序确实很大,指向可能会谈论这个特定问题的内容的链接会很有帮助。
windows - 微小读取(重叠、缓冲)优于大型连续读取的解释?
(为有点冗长的介绍道歉)
在开发一个将整个大文件 (>400MB) 预置到缓冲区缓存中以加速以后实际运行的应用程序的开发过程中,我测试了一次读取 4MB 是否仍然比一次仅读取 1MB 块有任何明显的好处。令人惊讶的是,较小的请求实际上速度更快。这似乎违反直觉,所以我进行了更广泛的测试。
缓冲区缓存在运行测试之前被清除(只是为了笑,我也对缓冲区中的文件进行了一次运行。无论请求大小如何,缓冲区缓存都提供超过 2GB/s 的速度,尽管令人惊讶的是 +/- 30%随机方差)。
所有读取都使用与相同目标缓冲区重叠的 ReadFile(句柄打开时使用FILE_FLAG_OVERLAPPED
和不使用 FILE_FLAG_NO_BUFFERING
)。使用的硬盘有些陈旧但功能齐全,NTFS 的集群大小为 8kB。磁盘在初始运行后进行了碎片整理(6 个碎片与未碎片化,零差异)。为了获得更好的数字,我也使用了更大的文件,以下数字用于读取 1GB。
结果真的很令人惊讶:
因此,这表明提交两个集群长度的一万个请求实际上比提交几百个大的连续读取要好。提交时间(ReadFile 返回之前的时间)确实随着请求数量的增加而大幅增加,但异步完成时间几乎减半。
在异步读取完成时,内核 CPU 时间在每种情况下大约为 5-6%(在四核上,所以应该说是 20-30%),这是一个令人惊讶的 CPU 数量——显然操作系统做了一些非也可以忽略不计的忙碌等待。30% CPU 在 2.6 GHz 下持续 25 秒,这对于“无所事事”来说是相当多的周期。
知道如何解释吗?也许这里有人对 Windows 重叠 IO 的内部工作有更深入的了解?或者,您可以使用 ReadFile 读取一兆字节数据的想法是否存在重大问题?
我可以看到 IO 调度程序如何通过最小化搜索来优化多个请求,尤其是当请求是随机访问时(它们不是!)。给定 NCQ 中的一些请求,我还可以看到硬盘如何执行类似的优化。
然而,我们谈论的是荒谬的小请求数量——尽管如此,它们的性能却比看起来合理的要高出 2 倍。
旁注:明显的赢家是内存映射。我几乎倾向于添加“不出所料”,因为我是内存映射的忠实粉丝,但在这种情况下,它确实让我感到惊讶,因为“请求”更小,操作系统应该更无法预测和安排 IO。起初我没有测试内存映射,因为它甚至可以远程竞争似乎违反直觉。你的直觉就这么多,呵呵。
以不同的偏移量重复映射/取消映射视图几乎需要零时间。使用 16MB 视图并使用简单的 for() 循环对每个页面进行故障排除,每页读取一个字节可在 9.2 秒内完成 @ ~111 MB/s。CPU 使用率始终低于 3%(一个核心)。相同的计算机,相同的磁盘,相同的一切。
尽管实际上只创建了一个页面,但 Windows 似乎一次将 8 个页面加载到缓冲区缓存中。每 8 页故障以相同的速度运行并从磁盘加载相同数量的数据,但显示较低的“物理内存”和“系统缓存”指标,并且只有 1/8 的页面故障。随后的读取证明页面仍然明确地位于缓冲区缓存中(没有延迟,没有磁盘活动)。
(可能与Memory-Mapped File is Faster on Huge Sequential Read 的关系非常非常遥远?)
为了使其更具说明性:
更新:
使用FILE_FLAG_SEQUENTIAL_SCAN
似乎在某种程度上“平衡”了 128k 的读取,将性能提高了 100%。另一方面,它会严重影响 512k 和 256k 的读取(您必须想知道为什么?),并且对其他任何内容都没有实际影响。可以说,较小块大小的 MB/s 图看起来更“均匀”,但运行时没有区别。
我可能也找到了较小块大小表现更好的解释。如您所知,如果操作系统可以立即处理请求,即从缓冲区(以及针对各种特定于版本的技术限制),异步请求可能会同步运行。
在考虑实际异步与“立即”异步读取时,人们注意到超过 256k,Windows 异步运行每个异步请求。块大小越小,“立即”处理的请求就越多,即使它们不能立即可用(即 ReadFile 只是同步运行)。我无法确定一个清晰的模式(例如“前 100 个请求”或“超过 1000 个请求”),但请求大小和同步性之间似乎存在反比关系。在 8k 的块大小下,每个异步请求都是同步服务的。
出于某种原因,缓冲同步传输的速度是异步传输的两倍(不知道为什么),因此请求大小越小,整体传输越快,因为更多传输是同步完成的。
对于内存映射预故障,FILE_FLAG_SEQUENTIAL_SCAN 会导致性能图的形状略有不同(有一个“缺口”向后移动了一点),但所花费的总时间完全相同(再次,这令人惊讶,但我不能帮助它)。
更新 2:
无缓冲 IO 使 1M、4M 和 512k 请求测试用例的性能图更高,更“尖峰”,最大值为 90 GB/s,但也有苛刻的最小值,1GB 的整体运行时间在 +/- 0.5 以内缓冲运行的 s(缓冲区大小较小的请求完成速度明显更快,但是,这是因为有超过 2558 个正在进行的请求,返回 ERROR_WORKING_SET_QUOTA)。在所有未缓冲的情况下,测得的 CPU 使用率为零,这不足为奇,因为发生的任何 IO 都通过 DMA 运行。
另一个非常有趣的观察结果FILE_FLAG_NO_BUFFERING
是它显着改变了 API 行为。CancelIO
不再起作用,至少在取消 IO的意义上没有。对于未缓冲的正在进行的请求,CancelIO
将简单地阻塞,直到所有请求都完成。律师可能会争辩说,该功能不能因疏忽其职责而承担责任,因为当它返回时已经没有更多的飞行请求了,所以在某种程度上它已经完成了所要求的——但我对“取消”的理解有点不同。
使用缓冲的重叠 IO,CancelIO
将简单地切断绳索,所有进行中的操作都会立即终止,正如人们所期望的那样。
另一个有趣的事情是,在所有请求都完成或失败之前,该进程是无法终止的。如果操作系统正在对该地址空间进行 DMA,这种做法是有道理的,但它仍然是一个令人惊叹的“功能”。
iostream - 缓冲读取器/写入器 VS 缓冲输入/输出流通过 FTP 传输文件
我一直在阅读 URL 和 URLConnection,我知道缓冲的 InputStream/OutputStream(用于字符流)和缓冲的读取器/写入器(用于字节流)都可用于通过 URL 和 URLConnection 将文件从一个 ftp 传输到另一个。但我想知道哪个更好用?我的源 ftp 是 Windows 2003 操作系统,目标 ftp 是 Unix 操作系统。来自源 ftp 的文件将在目标 ftp 中处理,因此字符表示/文件格式必须保持不变。
extjs - 在 sencha touch 移动应用程序中无限(直到最后)显示缓冲内容
我有一个相当长的列表要在我的 sencha touch 移动应用程序中显示,由于列表的内容,该应用程序非常繁重,然后我发现这个很棒的工具它大大 提高了效率但是这个库带来的问题是它将显示前 70 个项目,当您向下滚动时,它根本不显示任何内容。有没有人处理过。请告诉我。
下面提到的是测试代码的示例,它将帮助您进行模拟。
python - SSH with Paramiko : failing to read data
Below is my driver information where I need to pull the data(Firmware Version) using ssh script as show below.
This is the program I am using to read all the data first in "data" variable, so that later i can split n get info i need but where as no data it's printing in print data:
Please correct me on getting the data.
unix - UNIX 缓冲与非缓冲 I/O
无缓冲 I/O 和标准 I/O 有什么区别?我知道使用 read()、write()、close() 是无缓冲的 IO。Printf 和 gets 是缓冲的 IO。我也知道最好将缓冲 IO 用于大事务。我只是不知道为什么。在这种情况下,“缓冲”一词是什么意思?
android - Buffered Writer 在创建新文件时加载损坏的数据
基本上,我正在尝试将加速度计数据捕获到 txt 文件中。该代码将加速度数据写入字符串,然后在每次更改时进行更新,这很常见。我包括一个切换按钮,它开始记录数据并应该将其写入文件。这就是奇怪的地方。代码检查文件是否已经存在,然后在文件末尾添加一个数字以确保它不会覆盖旧数据。但是,它会创建一个充满垃圾或损坏数据的文件。我验证了如果文件已经存在,那么它将把好的数据写入文件,但如果它必须创建文件,它会创建一个损坏的文件。代码如下所示。不知道文件损坏是怎么回事。
我已经在我的清单中声明
包含损坏数据的日志文件示例
#EO'MyÎ&¸ Œ- `íС ïÇDêç³òß¼( 1Þ û'æÁ9Û™íb_CONSOLE ·óZub™
让我知道你的想法。