在Corona SDK中测量图像加载所花费的时间。
2014-10-16 4:33:49
收藏:0
阅读:102
评论:2
我正在尝试在 Corona SDK 中对加载大型图像进行基准测试。
local startTime = system.getTimer()
local myImage = display.newImageRect( "someImage.jpg", 1024, 768 )
local endTime = system.getTimer()
print( endTime - startTime ) -- 输出 8.4319999999998
这将返回大约 8 毫秒的值。我知道加载和显示图像需要更长的时间,因为如果它真的只需要 8 毫秒,我不会注意到延迟,但是我确实注意到了。我估计它需要大约 300 毫秒。
而且,当加载大型图像时,FPS 显著下降。我使用 enterFrame 事件来监视这个过程,当加载图像时,它会在 1 帧内打印大约 0.3 的值。
Runtime:addEventListener( "enterFrame", myListener )
function onEnterFrame (event)
print( display.fps )
end
当加载时,渲染帧需要很长时间,即使图像加载时间少于 1/60 秒。我想这意味着渲染异步发生在其他地方。
所以,我该如何测量实际加载和显示图像所需的时间?
点赞
用户869951
最可能的情况是图像在场景的渲染循环中被呈现。没有事件来指示图像已被渲染。但是,如果在场景的创建事件处理程序或按钮单击处理程序中创建显示对象,并注册一个 enterFrame 事件处理程序,您可以测量此事件和第一个帧事件之间的时间。我在这里不能尝试,但我的猜测是这将为您提供渲染图像所需时间的估计。不要使用 FPS。更大的图像可能会给您更大的测量结果。如果您测量 enterFrame 事件之间的时间,您可能会发现它比 create/click 事件和第一个帧事件之间的时间或者在 create/click 事件之后的前两个帧事件之间的时间要短得多。如果您想看一些示例代码,请发表评论。
2014-10-16 02:42:04
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
由于 Corona SDK 是闭源的,我们需要使用文档和想象力。
我看到这里有三种可能:
display.newImageRect的调用是非阻塞的:它“开始”加载图像,然后继续执行。当其他 SDK(主要是基于 javascript 的 SDK)发生这种情况时,您会得到一个“就绪回调”,您可以在图像对象上使用它,但我在文档中找不到这种东西。我打赌是第三种情况。但这并不重要。无论是哪种情况导致了减速,它们的解决方式都相同:不要在绘制图像之前加载它们,而是要 预加载 它们。
我不使用 Corona SDK,但是快速谷歌搜索指向了 storyboard 模块,特别是 storyboard.loadScene。
创建一个新场景,在其中列出您需要的所有图像,并在显示之前加载它 - 这样图像加载将提前完成,不会减慢您的应用程序。