掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5702|回复: 37

[经验交流] GoldenDict致命伤:HTML渲染巨慢,词典一多就卡,被欧路秒杀!

   关闭 [复制链接]
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2019-12-25 20:19:15 | 显示全部楼层 |阅读模式
    以下讨论基于WINDOWS版,安卓版我没试过不能妄评,但估计也差不多。
    7 |* X' F) {& h2 b
    ! T5 T. D! g% m# ~- wGoldenDict方方面面超越欧路,但有个致命伤:词典稍微一多(比如上百)就卡。
    5 x: ]  E+ J' s9 S7 y2 y+ l
    + B" W4 F; j! t7 ^1 z经过仔细观察,电子词典软件呈现查询结果页面的速度和安装的词典库数目本身并无直接关系,真正相关的是在每部词典查同一个词获得的查询文字量的总和。需要呈现的文字总量越大它就越慢。如果你装100部英汉词典,但每部词典都是单纯地只有一个中文词解释而无例句和其他解释的,可能不如装20部牛津高阶和朗文当代这种释义及其丰富的词典更卡。查一个意义单纯义项少的所谓“高阶”单词不如查义项多例句多的常用词卡。
      h, E2 r) f& H( B# n( p7 c
    ! S9 R+ ]: K: c- p) Z' M如果不信我的话,请你查几个释义丰富的词看看, 比如 bear take go come, 刚输入完这些词,等他呈现出页面了(你以为此时它稳定了其实根本没完呢)立即用鼠标点击你200个词典中的任意几部词典看看能否立即在词典间随意跳转?保证你卡死不动了。别说SSD了,你就拿DDR4 内存模拟硬盘都没用。这主要是词典软件渲染HTML页面的算法和CPU运算速度的问题。不信的话,它卡在那里的时候,你可以调用任务管理器查看CPU占用率,最高的肯定是这词典软件。
    1 G" ?3 o5 d: T欧路在查词结果页面渲染速度上,可以说秒杀 Goldendict,尽管它的速度离我的要求也还很远。
    - V5 q: Z% z3 E2 l, {3 B: p6 A3 x: m, q
    3 Y7 x8 _% T' v  u! s
    9 k- N0 j6 P# Q! M9 ~9 P4 v! C2 S8 d) h
    要是谁装了200部词典在GoldenDict里(必须有牛津高阶朗文当代等这种释义丰富的词典),能输入常用词之后三五秒之后就能稳定地渲染出页面,且可立即在词典间点击切换无卡顿地随意跳转,请给一个视频作为证明,并给我硬件详细配置,本人愿意附送1万米作为回报!# O- G: v: Y! f
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2019-12-25 21:45:29 | 显示全部楼层
    楼主整天就是瞎bb,今天讨论这,明天讨论那,后天是不是要讨论一下单人航天飞机的实现与背后的工程原理?& O1 O9 Y! D) r
    刚烧开的水是不能喝,用得着大声嚷嚷吗. t8 `, E# x7 @8 H  J
    我清是服气透了,你发这些帖子意义何在9 S) z, C" \$ a2 L" O
  • TA的每日心情
    开心
    2019-1-18 23:55
  • 签到天数: 230 天

    [LV.7]常住居民III

    发表于 2019-12-25 21:26:01 | 显示全部楼层
    照道理说,页面渲染速度和内容多少有关,此外就是css加载、js加载。尤其js的速度,非常考验水平。; A% u- ]3 K: ]5 w% w5 v
    何况GD的显示方式是把词典的内容处理后塞到一个html下,查出来时会有先后显示,可见是边渲染边把词典内容往页面html塞。处理速度(处理css、动词条标签)且放一边,DOM操作(就是把内容往html塞这个动作)的速度比js运算慢几个数量级,整多了可不卡么?
    ! r3 `. O* g( g6 M- ^这里头应该有逻辑优化的空间。不过估计GD的作者本来也没考虑塞几十个大部头的情况。
    5 J- q# D7 }3 x9 ^0 t3 h. x至于你说的要求,我这么说吧:你把那些内容都塞到一个html里,那些css和js都扔到同一个文件夹,你用浏览器打开看看要多久,这就是本身页面的渲染速度。词典软件的渲染速度不会比新版本的主流浏览器快(不然Google/Apple/Microsoft工程师下岗算了),同时还要做别的处理。三五秒时间处理几十上百部内容丰富、有样式有js的词典,光渲染本身就已经超过现阶段浏览器引擎发展水平了。
    / v6 f' a+ E# }. C! \% Z" s真要快速切换,办法只有说,每个词条单独页面渲染,然后默认全部或多数折叠起来,你点那个再加载哪个。把耗时分散了,自然就“快”了。
  • TA的每日心情
    开心
    2021-4-11 18:44
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2019-12-25 22:08:11 | 显示全部楼层
    本帖最后由 我突然想拉屎 于 2019-12-25 22:10 编辑
    8 M; m6 T: S5 c3 L
    , ]* L# W& x7 C% |! _0 }你说的都对。qt在5.14决定弃用WebKit引擎,而改用WebEngine新引擎。% @5 ?5 V- \. v+ c  M3 ^: U: J7 y
    0 A/ E% V$ L7 d7 r
    Qt 5.14 Qt WebEngine Porting from Qt WebKit to Qt WebEngine
    The Qt WebEngine core is based on the Chromium Project

    , R4 M$ Y9 J0 v% }新引擎是以Chrmium为基础的,渲染超快,排版好。连Edge都不得不低头,以Chrmium为内核了。# w# C( P- \/ \( S
      i8 ]9 l8 R9 J4 J; Y
    但是GoldenDict这种十年的老古董级别软件,包袱重,很难迅速的从WebKit改成WebEngine, 甚至可能永远不改了。
    + `1 h% X0 P% V
    1 i7 X; i- H4 T; {9 _8 k! J你可以去Github区抱怨,让他们重视一下
    ' A1 q! V  l# h" @; F
    ( P% W2 H3 h9 T) y# b
    其实,Goldendict在mac下也很难用

    - O, ]% K, L* i5 l$ i可以试试在winehq安装64位绿色版的exe。
    ; q% ~  A. v) r$ U6 q我还写了个教程。听说10.15可以用,但只能安装64位。6 K; U. Z6 Z9 ~5 c
  • TA的每日心情
    开心
    2019-10-10 05:35
  • 签到天数: 328 天

    [LV.8]以坛为家I

    发表于 2019-12-25 20:56:44 | 显示全部楼层
    词典多的话,分组——能很好解决卡死的问题,我分了好几个组,基本不怎么卡的。

    该用户从未签到

    发表于 2019-12-25 20:43:19 | 显示全部楼层
    1. Goldendict不是国人开发的,你说这么多情绪化语言也没用,作者看不到1 M0 g* j0 A9 y: p
    2. mdict是国人开发的,没有你说的这个问题,也没见你夸8 s, ?+ [+ v1 u# }; c
    ( g4 @2 F9 b' ]) S6 e# P  G$ v4 e
    0 Q# q8 M' }8 q3 z
    其实,Goldendict在mac下也很难用
  • TA的每日心情
    慵懒
    2021-9-28 14:33
  • 签到天数: 158 天

    [LV.7]常住居民III

    发表于 2019-12-25 21:01:39 | 显示全部楼层
    本帖最后由 atauzki 于 2019-12-25 23:09 编辑 $ ^6 ^5 j- B2 T, `& h$ c7 d0 C2 ]
    : C+ i- q5 [5 C3 K
    qtwebkit移植的html浏览器那效率,渲染长文本你还想怎样。
    6 l2 ~+ i: N* x. ]7 {( \5 e4 NGoldendict就是小开源软件,不满意请自己上去提issue或者提交pr去,别扯什么国外程序员水平。openssl那么多人用,核心开发者才3个: {- Z7 x6 B  E9 I7 @
  • TA的每日心情
    慵懒
    2020-4-10 13:19
  • 签到天数: 269 天

    [LV.8]以坛为家I

    发表于 2019-12-25 21:13:36 | 显示全部楼层
    唉,我正是相反,欧路比goldendict慢多了。
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-25 22:09:10 | 显示全部楼层
    dfliaoyue 发表于 2019-12-25 21:26
    9 E* s& f- J) {  L3 K5 O6 q照道理说,页面渲染速度和内容多少有关,此外就是css加载、js加载。尤其js的速度,非常考验水平。
    ; l% K3 K- K  N" A$ s4 }8 E3 I何况GD的 ...

    8 x) k6 G3 }3 W& c/ j+ |这位朋友您说再多理论也没用啊,反正我这i5的机器,200部词典GD就很卡了,400部死在那什么词也查不了。但人家欧路就是不一样,400多部词典查take go这种几乎解释最多最长的单词也就是最多30秒就稳定结束渲染词典间随意跳转不再卡顿,一般的词10秒之内巍巍泰山般挺立而不倒。
    7 x- \" s( m+ l4 L+ U2 x从这点看,欧路比GD强不止是一点半点,就这速度看,洋程序员真该向图程序员取取经了。
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-25 22:09:58 | 显示全部楼层
    simonfire 发表于 2019-12-25 21:45, I! c& o5 l$ q  K
    楼主整天就是瞎bb,今天讨论这,明天讨论那,后天是不是要讨论一下单人航天飞机的实现与背后的工程原理?
    3 N6 B0 r1 e' O5 H9 e7 N: z ...

    4 P) ~8 G. N/ M& ^  ?& v意义在于有高人能解决此问题。
  • TA的每日心情
    开心
    2019-1-18 23:55
  • 签到天数: 230 天

    [LV.7]常住居民III

    发表于 2019-12-25 22:10:30 | 显示全部楼层
    lbhl 发表于 2019-12-25 22:09
    % S+ ?5 W/ N7 P( |  ]  T2 u这位朋友您说再多理论也没用啊,反正我这i5的机器,200部词典GD就很卡了,400部死在那什么词也查不了。但 ...
    * i, ?% e! y+ _; U3 U: q
    欧路是全部显示还是只显示前几本?
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-25 22:12:46 | 显示全部楼层
    nonwill 发表于 2019-12-25 21:39
      B, o$ E6 u. X( }/ C6 p/ b, b哈哈,楼主多是站着说话不腰疼。
    " N3 N# q7 {0 l只是拿CPU占用说说哈,CPU就是拿来用的,密集型任务它不高就说明软件偷懒 ...

    6 \8 D) z5 r6 M( U7 a朋友你误会了,我写它资源占用率高,是因为前面还有个贴讨论显示速度的都集中在换SSD了以为换硬盘就能解决显示速度。
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-25 22:13:54 | 显示全部楼层
    dfliaoyue 发表于 2019-12-25 22:101 Y3 `3 e# w; E+ m( w
    欧路是全部显示还是只显示前几本?
    0 }" _* C4 U/ I+ |8 X
    当然我是说400多部同时显示了,分组还算啊?当然,一屏放不下,但是我不断切换不同词典无任何卡顿。
  • TA的每日心情
    开心
    2019-1-18 23:55
  • 签到天数: 230 天

    [LV.7]常住居民III

    发表于 2019-12-25 22:21:21 | 显示全部楼层
    lbhl 发表于 2019-12-25 22:13
      f, M* K+ j) Z# a  A" k当然我是说400多部同时显示了,分组还算啊?当然,一屏放不下,但是我不断切换不同词典无任何卡顿。 ...
    ' v# R6 ?* t. K; E
    那应该是分步渲染的。同时渲染不可能怎么快。chrome好像就用这招。2 m  v, r2 j+ d  k
    算法肯定写得好就是。GD的逻辑确实烂,除了渲染之外的开销太大了。我一直期待一个类似移动端mdict那样便捷好用的桌面词典软件,最好是chromium内核。Mdict PC更像个开发调试工具吧,主要是IE兼容模式的内核对html5标准支持稀烂。欧路功能太杂,还总有些诡异的问题,有专业版也不想用。
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2019-12-25 22:30:34 | 显示全部楼层
    lbhl 发表于 2019-12-25 22:09& q4 B9 Q7 A0 `1 V
    意义在于有高人能解决此问题。
    : R( F9 ~# b1 |
    那你应该直接去github提交issue,看看作者怎么说
  • TA的每日心情
    奋斗
    2020-11-15 11:37
  • 签到天数: 249 天

    [LV.8]以坛为家I

    发表于 2019-12-26 04:43:18 | 显示全部楼层
    nonwill 发表于 2019-12-25 22:36
    ( b0 y7 g) K. E) d( Q都是能提升速度的,只是距要求还有差距,但进步了不是?- ~  l' o0 ~/ [4 C/ `
    今天刚好把GD并发加载词典搞了,我不收藏词典, ...

    $ p. I0 q. b& p哈哈哈SSD也没用的,我的NVME 三星970 Pro也不行,字典和主程序都在SSD里,该卡死还是卡死。
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-26 09:10:29 | 显示全部楼层
    lgmcw 发表于 2019-12-26 04:43. b( F5 f! o- Q- p
    哈哈哈SSD也没用的,我的NVME 三星970 Pro也不行,字典和主程序都在SSD里,该卡死还是卡死。 ...

    2 r, S* f: h' }+ \4 e1 u) i, ~我说了吧,主要是CPU计算量太大的问题,不是硬盘速度
  • TA的每日心情
    开心
    2022-11-1 11:39
  • 签到天数: 165 天

    [LV.7]常住居民III

    发表于 2019-12-26 09:35:26 | 显示全部楼层
    (1)同时大量加载,速度降下来是必然的,个人也希望GD优化后能秒开。(2)就我个人而言,几百部词典同时用的时候貌似不多,把词典按使用场景分组,每个组十几本,几十本,用快捷键快速切换分组,用起来还是很顺畅的。(3)GD是开源,连rasberry Pi都可以正常安装使用,这点是个人喜欢它的硬道理
  • TA的每日心情
    奋斗
    2020-11-15 11:37
  • 签到天数: 249 天

    [LV.8]以坛为家I

    发表于 2019-12-26 09:35:56 | 显示全部楼层
    本帖最后由 lgmcw 于 2019-12-26 09:46 编辑
    % G- e1 O& K3 [7 t# y/ {) b$ W
    lbhl 发表于 2019-12-26 09:10
    / {5 Z- H; U9 U- ?9 Z/ u我说了吧,主要是CPU计算量太大的问题,不是硬盘速度

    2 z; t% W+ v4 k# ~也不是CPU,就是程序本身的问题。64G内存电脑,8核16线程,超频到4.5GHz,也没用。
    & U! ]! ?& N; \说白了还是对资源的利用不够aggressive,你看chrome开网页为什么不卡,因为他会想办法捞到最大的资源,完全不考虑节约的,这反而是现代软件最成功的一种优化思路。  }9 Y4 ^5 ~% D- h2 R- e9 @8 h
    我的猜测是:GD的优化思路还是走轻小路线的,做优化是精打细算,词典量小的时候优化极其完备,很容易就能跑起来。但是词典量大了,这种情况就没有考虑没有优化。
    5 D$ f! @+ O6 s1 J' d
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-26 22:24:58 | 显示全部楼层
    lgmcw 发表于 2019-12-26 09:35
    & c! J( N2 |% e# s- l2 D# a也不是CPU,就是程序本身的问题。64G内存电脑,8核16线程,超频到4.5GHz,也没用。  P3 y  W* F( Q: J3 U- G
    说白了还是对资源的利 ...
    3 G/ q/ I& c* C0 n: @- D
    资源在那不用纯属浪费。我最讨厌那种为了所谓内存和CPU占用率而出卖速度的软件。老子我买了这么好的机器你丫就不用非得老牛拉破车,想气死我吗?你要怕人家资源被你霸占不够用你可以给人家选择小资源运行模式嘛!
  • TA的每日心情
    奋斗
    2020-11-15 11:37
  • 签到天数: 249 天

    [LV.8]以坛为家I

    发表于 2019-12-26 22:28:32 | 显示全部楼层
    lbhl 发表于 2019-12-26 22:24: I/ a7 E. D( |% ]- S, u9 j  ?6 _
    资源在那不用纯属浪费。我最讨厌那种为了所谓内存和CPU占用率而出卖速度的软件。老子我买了这么好的机器 ...

    1 d4 L! Y; t, N( q+ z! a3 r其实这个也不好做,Adobe lightroom因为跑不满CPU被吐槽了好多年,好在现在追上来了。
  • TA的每日心情
    擦汗
    2020-7-23 13:21
  • 签到天数: 353 天

    [LV.8]以坛为家I

    发表于 2019-12-27 09:39:40 | 显示全部楼层
    我分了5个组,常用的有2个组,还是很慢。
  • TA的每日心情
    无聊
    2023-12-27 22:43
  • 签到天数: 500 天

    [LV.9]以坛为家II

    发表于 2019-12-27 09:59:48 | 显示全部楼层
    技术贴,少有。你说的是电脑上装欧路词典吗?
  • TA的每日心情

    2019-9-23 23:38
  • 签到天数: 8 天

    [LV.3]偶尔看看II

     楼主| 发表于 2019-12-27 22:43:06 | 显示全部楼层
    nihaocool1980 发表于 2019-12-27 09:59- h/ c. M& {% c) f
    技术贴,少有。你说的是电脑上装欧路词典吗?
    ' |, f9 f  B: x" N* i8 d4 R- @
    是的,电脑版的欧路。但是估计安卓和苹果的会更差,因为还是INTEL桌面电脑的CPU最强大但都还慢。
  • TA的每日心情
    奋斗
    2022-12-1 14:41
  • 签到天数: 1047 天

    [LV.10]以坛为家III

    发表于 2020-1-1 16:09:38 | 显示全部楼层
    没多大必要弄上百个词典,分个组,三五本常用的就行
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-28 05:46 , Processed in 0.061573 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表