#1 - 2017-2-21 19:59
AWSL (AWSL)
没错,说的就是那两个帖子的网页
我已经彻底不想去优化安卓端这部分代码的性能了
因为这性能是绝望的

Jsoup.parase()耗时: 耗时1527ms
        回复之外的解析耗时: 耗时935ms
        回复解析耗时: 耗时2869ms
        解析总耗时: 耗时3804ms
解析网页结束: 耗时5332ms
网页生成结束: 耗时4096ms

总耗时近8秒,我一方面佩服自己的代码优化能力,另一方面也佩服你们堆楼的能力(bgm118)

相比另一边觉醒楼,虽然还算好点,但还是有差不多两秒的时间(bgm116)
Jsoup.parase()耗时: 耗时303
        回复之外的解析耗时: 耗时151
        回复解析耗时: 耗时591
解析网页结束: 耗时1045
网页生成结束: 耗时742

正在考虑换个方式来优化,比如解析一遍后把整个解析结果保存下来
PS:第一阶段算是要完成了,再过段时间修改细节抓抓bug就可以发布第一版了
#2 - 2017-2-21 20:19
(不易相处)
第一次启动的时候就把这两个缓存下来。(bgm38)
#2-1 - 2017-2-22 05:16
#2-2 - 2017-2-22 17:19
AWSL
问题不是出在网页获取,而是网页的生成上。如果把解析的结果整个保存下来,多久更新,更新的时机就是头大的问题。总不能我为了这两个楼,开个服务每天定时在后台不停解析吧
#2-3 - 2017-2-22 22:27
当歌
上井葉心 说: 问题不是出在网页获取,而是网页的生成上。如果把解析的结果整个保存下来,多久更新,更新的时机就是头大的问题。总不能我为了这两个楼,开个服务每天定时在后台不停解析吧
不知道你是怎么实现的,换我就转sqlite存起来,然后分页超简单
如果页面逻辑没法改了,那就只有自己提供API服务了。。。
#2-4 - 2017-2-22 23:41
AWSL
当歌 说: 不知道你是怎么实现的,换我就转sqlite存起来,然后分页超简单
如果页面逻辑没法改了,那就只有自己提供API服务了。。。
啊啊啊啊,一想到分页就头大。因为这个分页是需要webview的网页前端和程序内部的网页生成后端互动的。。。。。哦,不对,似乎不要这么麻烦…………
啊啊啊啊啊,暂时不管了,先把浏览历史功能完成吧。目前想做成一个ios的wiki客户端那样的脑图的样子。
但找了一圈没现成的java库,桑心。只找到个js的库。难道又得用webview来搞吗orz
#2-5 - 2017-2-22 23:53
ouoω
上井葉心 说: 啊啊啊啊,一想到分页就头大。因为这个分页是需要webview的网页前端和程序内部的网页生成后端互动的。。。。。哦,不对,似乎不要这么麻烦…………
啊啊啊啊啊,暂时不管了,先把浏览历史功能完成吧。目前想...
這圖像是force-based layout?
我也不知道有啥好的java layout庫 (C#和js都有好幾個)
不行就自己擼吧.. 擼輪子很好玩的
#2-6 - 2017-2-23 00:10
AWSL
mono 说: 這圖像是force-based layout?
我也不知道有啥好的java layout庫 (C#和js都有好幾個)
不行就自己擼吧.. 擼輪子很好玩的
查了一圈,java上的确很少……我都开始考虑是不是直接用webview然后在webview里生成了
但又真的实在不想去碰javascript…………难道又得再造个轮子了吗…………
#3 - 2017-2-21 22:02
(xxsuneV)
支持!
#4 - 2017-2-21 22:38
一次性解析完所有回复吗?
#4-1 - 2017-2-22 17:06
AWSL
是的。要不然这整个讨论串页面的逻辑就得重写了。
#5 - 2017-2-21 22:43
(人型自走单线程大脑培养皿#5)
检测到进这两个帖子时直接链到403就好了
#5-1 - 2017-2-22 05:17
Franklin Yu
404 也可以
#5-2 - 2017-2-22 10:36
fifth
Franklin Yu 说: 404 也可以
403 error: access forbidden
禁則事項です
#5-3 - 2017-2-22 17:07
AWSL
对不起,你打开了不得了的楼层。error。
#5-4 - 2017-2-22 17:49
Franklin Yu
fifth 说: 403 error: access forbidden
禁則事項です
就不能假裝這個樓不存在麼……
#5-5 - 2017-2-22 18:08
fifth
Franklin Yu 说: 就不能假裝這個樓不存在麼……
没有这几个楼的bgm是不会给人带来幸福的
#5-6 - 2017-2-22 18:18
Franklin Yu
fifth 说: 没有这几个楼的bgm是不会给人带来幸福的
403 不也沒法帶來幸福麼(bgm76)
#5-7 - 2017-3-3 10:16
事实是柿子 - ⭐️VIP3
Franklin Yu 说: 403 不也沒法帶來幸福麼
405,不准用手机看,某种意义上也算“方法”错误吧(bgm58)
#5-8 - 2017-3-3 15:57
fifth
柿沼楚子 说: 405,不准用手机看,某种意义上也算“方法”错误吧
说的好像用电脑就能打开一样的
#6 - 2017-2-21 23:32
(Boom!)
电脑上都要6s呢(bgm38)
就当成特性好了,加点特殊标注
#7 - 2017-2-21 23:37
(ドンドンドナッツ、デイデイアップ)
讲道理bgm的高楼不少啊……其他的帖子表现如何呢。
#7-1 - 2017-2-22 17:08
AWSL
高楼能高到学姐楼这样的高度吗。
大部分回复在一千以内的基本还是挺快的。
#8 - 2017-2-21 23:37
(买漫画切记远离烂店“漫爵”&“神话典传” ...)
是肉体修正(严肃)
#9 - 2017-2-21 23:46
(嘘をうまくつけないバカ)
所以说,自己搭个服务提供 API (bgm38)
#10 - 2017-2-22 00:03
(BGMのTrinitas<=>婊冈妈<=>补冈妈<=>拜冈妈 三位一体 ...)
BGM三柱神至少哲学楼很快啊?(bgm38)
#11 - 2017-2-22 01:22
(Information doesn't harm)
最近正好在爬bgm的东西想看看能不能做成一门课程的project,第一次接触爬虫用的python的beautifulsoup,深切感到优化的重要性(bgm38)
#12 - 2017-2-22 05:18
(讓一切都自動化!)
每次看到 Jsoup 總覺得看到了 JSONP……
#12-1 - 2017-2-22 10:27
当歌
+1
#13 - 2017-2-22 06:06
(ゝ∀・)
´_>` 我只是来吐槽 parse 没有拼对。
#13-1 - 2017-2-22 17:08
AWSL
噗…………23333
#14 - 2017-2-22 23:20
(hhh汝视视汝)
jsoup這麼慢? 不至於吧..
#15 - 2017-2-23 00:48
(狡兔三窟)
噗,以后谁再想造轮子就拿这俩帖当benchmark问他performance
#15-1 - 2017-2-23 00:56
#16 - 2017-2-24 01:34
(hhh汝视视汝)
我翻了一下Jsoup的代碼, 覺得幾個地方有優化餘地

(沒看你的代碼, 我假定你只用了最外層的Jsoup.parse() 和Element.select() 等 )


#1 寫個新的 类似SAX的html parser
- Jsoup.parse() 是建立完整的dom才返回的. 我們其實不需要完整的dom作爲結果.
- Jsoup的Element.select() 也不快. 這個好像每次都遍歷整個dom樹, 我沒看到任何剪枝處理.
- 即使傳入InputStream, Jsoup也會先讀完才開始parse. 自制parser應該可以做到讀InputStream和parse同時開始.
- Jsoup有一些tokenizer / tag可以利用. 手寫新parser可以不用寫這些底層函數.

#2 儘早開始顯示
- 可以在計算線程開始parse, 並分批把結果發送給UI線程 (比如開始解析後立刻返回一個RxJava的 `Observable<Post[]>`給UI)

---------
其實我很久前就想把html解析功能做完了.. 以前開坑時還偷偷開了個小組
如果有興趣 我們可以一起研究 (bgm29)
#16-1 - 2017-2-24 18:13
AWSL
我已经死在自制思维导图上了,现在准备就搞个最普通的历史功能了。
解析的话感谢提供思路,不过目前是打算把基本功能全部完成后再慢慢开搞具体的优化。现在第一阶段算是要完成了。
接下来收收尾就是进入第二阶段的标记,用户页面的构建,讨论串回复之类的功能了。做完估计又是一个多月,具体到优化可能还会拖很久(死亡)
#17 - 2017-2-24 20:54
(命里有时终须有,命里无时莫强求。)
直接硬编码,屏蔽掉这两个帖子。
#17-1 - 2017-2-24 21:49
epix
以后的changelog:
xxxx-xx-xx: 屏蔽掉了新出现的长帖子
#18 - 2017-3-3 15:54
(advaita)
话说。
性癖觉醒的手下 是谁?
求告知。
#18-1 - 2017-3-4 11:43
不经意之间就卖萌啦
最终Jsoup还是败在了远子学姐性癖觉醒的手下(bgm38)