Skip to content

feat:提高验证速度#736

Closed
TestPlanB wants to merge 1 commit into
Tencent:masterfrom
TestPlanB:dev
Closed

feat:提高验证速度#736
TestPlanB wants to merge 1 commit into
Tencent:masterfrom
TestPlanB:dev

Conversation

@TestPlanB
Copy link
Copy Markdown
Contributor

Looper.myLooper从ThreadLocal中的get方法拿数据,其实还要维护ThreadLocal中各种状态比较,如果判断是不是在ui线程的话,有一个小建议,可以换成pr方法验证,Thread.currentThread()其实ThreadLocal的get方法也会调用。手机自测能快20毫秒左右

@shifujun
Copy link
Copy Markdown
Collaborator

感谢贡献代码🌹

首先如果这行代码需要优化,前提应该是它被足够频繁的调用了。但这里是ApplicationOnCreate调用依赖的,加载一个插件也只调用一次。所以其实不太需要优化。

其次,当性能不是那么重要时,更常见的写法提高代码可读性更重要。Android系统源码中到处都是这个写法:
https://cs.android.com/search?q=%22Looper.myLooper()%20%3D%3D%20Looper.getMainLooper()%22

最后,如果要这样优化,是不是Looper.getMainLooper()也应该尽量避免重复调用,缓存起来更好。

@TestPlanB
Copy link
Copy Markdown
Contributor Author

对,其实这个也不是非要优化的点。只是个人感觉判断ui线程时比起用ThreadLocal的get方法更简化。其次就是缓存其实是也算是加重了内存空间。pr算是加快但是没有副作用,因为原写法本来就有用到>.<。

@TestPlanB
Copy link
Copy Markdown
Contributor Author

至于可读性,我觉得都还好,pr就更直接了,比较当前线程跟主looper的线程,语意也挺符合是不是ui线程。谢谢大佬评论哈~

@shifujun
Copy link
Copy Markdown
Collaborator

语义上是没什么问题。主要区别还是哪种写法更广泛。确实ThreadLocal也要调用Thread.currentThread(),原本的写法确实麻烦了。我看API 23之后,Android源码里都写Looper.getMainLooper().isCurrentThread()了。

@shifujun
Copy link
Copy Markdown
Collaborator

那就一起都改一下吧。我搜了一下源码里Looper.getMainLooper()还有很多处。麻烦都帮忙改掉吧。

另外,麻烦rebase时修改一下你的git用户名,目前的hailiang.chen <hailiang.chen@huolala.cn>看起来不是你的Github账号。合入PR之后没法把你关联成贡献者。

@shifujun
Copy link
Copy Markdown
Collaborator

image
就是如果正确的话,这里是能显示出你的头像并跳转的。

@TestPlanB
Copy link
Copy Markdown
Contributor Author

#737 pr已经重新提啦,谢谢大佬

@shifujun
Copy link
Copy Markdown
Collaborator

你应该force push原来的dev分支,这个PR就会自动更新了,不用提新的PR的。

可以顺手把提交记录再改成perf: 优化主线程判断代码,表示这是个性能优化的提交。

@TestPlanB TestPlanB closed this Dec 30, 2021
@TestPlanB
Copy link
Copy Markdown
Contributor Author

这个旧分支我拿来测试了,加了很多测试代码,所以就开新分支提了,麻烦大佬移步#737噢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants