midiOutPrepareHeader 是一个快速调用吗?
midiOutPrepareHeader、midiInPrepareHeader 是否只是设置一些数据字段,还是执行了一些更耗时的操作?
我正在尝试决定是根据需要构建和销毁 MIDIHDR,还是维护它们的池。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您实际上只有两种方法可以判断(没有 Windows 源代码):
1) 分析它。 根据您对所需时间的发现,设置一个仅限调试范围的计时器,当它突然花费的时间超过您认为应用程序可接受的时间时进行记录,或者执行您的池解决方案。 尽管文档说一旦调用准备函数就不要修改缓冲区,并且似乎如果您想重新使用它,您可能必须修改它。 我对文档不够熟悉,无法说您提出的解决方案是否有效。
2) 单步执行装配并查看。 别害怕。 获取 MSFT 公共符号,看看它是否看起来只是在填充外字段或者它正在做一些复杂的事情。
You really have only two ways to tell (without the Windows source):
1) Profile it. Depending on your findings for how long it takes, have a debug-only scoped timer that logs when it suddenly takes longer than what you think is acceptable for your application, or do your pool solution. Though the docs say not to modify the buffer once you call the prepare function, and it seems if you wanted to re-use it you may have to modify it. I'm not familiar enough with the docs to say one way or the other if your proposed solution would work.
2) Step through the assembly and see. Don't be afraid. Get the MSFT public symbols and see if it looks like it's just filling out fields or if it's doing something complicated.