簡體   English   中英

為什么通過Javascript訪問DOM文檔比使用Java更快?

[英]Why is it faster to access DOM document via Javascript than Java?

速度上最明顯的差異是Java腳本中dom元素的遞歸遍歷,它總是比Java中實現的相同方法快很多。

為什么會這樣呢? 為什么我能比Java更快地遍歷dom文檔,尤其是當它們共享相同的方法(遞歸)時。

這是因為瀏覽器沒有適用於Java的解釋器。 他們解釋javascript。 DOM是可以在任何地方使用的模型,但是它主要用於瀏覽器環境,並且多年來,瀏覽器已經針對JavaScript優化了DOM解析。

瀏覽器之所以優化DOM解析,是因為DOM解析是動態Web開發的基石。 考慮使頁面更具動態性的正常方法:

1.) Listen for some events fired on the page.
2.) When those events are fired, modify some number of DOM objects, 
    e.g., by changing their visibility, geometry, or actually moving
    them to other portions of the DOM.

DOM在這里很重要的原因是因為它提供了一種將文檔存儲在瀏覽器內存中的規范,從而不必通過更改標記的一小部分來重新呈現整個頁面。 存儲在瀏覽器內存中的這些DOM對象的結構類似於本機javascript對象; 因此,針對它們針對javascript進行優化更容易。

而且自從動態網頁變得必不可少以來,瀏覽器就一直在相互爭斗,以擁有最快的自定義javascript解釋器,並且在動態網頁環境中,您將能夠獲得最多回報的主要地方用於優化的是DOM解析。

我看不到Java環境中迫切需要使用DOM,但是在瀏覽器環境中這絕對是必不可少的。 這是最有可能的原因,是您在javascript中看到比java更好的DOM解析優化。 越來越多的人對使其在瀏覽器中起作用具有既得利益。 但是,為澄清起見,我不確定在代碼級別上為什么它實際上更快的確切技術原因。

我認為答案可以概括為“因為這是瀏覽器開發人員付出更多努力的一種訪問方式。”

如果在另一個世界中,每個人都使用Java在網頁上提供豐富的交互性,而Javascript僅用於煩人的滾動橫幅欄,那么您很可能會提出相反的問題。 在這種情況下,瀏覽器供應商將盡可能快地從Java進行DOM訪問。

您的Java代碼可能使用Xerces之類的通用XML解析器,並且對HTML的非XML兼容部分進行了糾錯。 您的Javascript可能正在使用高度優化的HTML特定的解析器,幾乎可以肯定地以本機代碼實現了CPU密集型部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM