Mark's Place

A place for Mark's murmuring, blah, blah, blah, ...

Mark's Place
Watch Timeline

PHP RSS Parser 的比較(SimplePie vs. MagpieRSS)

Mark Wu 發表於 2008/01/10 06:42 · 靜態連結網址

最近想把 LifeType 中的幾個 Class Library 換掉,原因是他們都太老舊,也都沒有人在維護,包含:

  • PHPMailer 換成 SwiftMailer。因為 SwiftMailer 支援 SSL 與 TLS 等協定,所以我就可以拿 Google Mail 來當 Mail Server。
  • Kses 換成 HTMLPurifier。因為 Kses沒人在維護了,HTMLPurifier 看起來開發非常的活躍。
  • MagpieRSS 換成 SimplePie。情況跟 Kses 一樣。

但是換之前,總得作一些實驗,要不然換到一個地雷就完蛋了。

下面是 MagpieRSS 與 SimplePie 的測試,我採用的是 Code Ninja 的測試方式與資料,使用的軟體與設定如下:

  1. MagpieRSS 0.72 與 SimplePie 1.1
  2. 我將 test1.rss 放在我的 localhost 中, 減少 remote 讀取的時間。不過原始的 test1.rss 用 SimplePie 並無法讀取,會發生 XML Parser Error。我是用 Firefox的檢視原始碼工具另存新檔後,SimplePie 才能讀取 test1.rss。
  3. 我的環境是使用 Apache 2.0 與 PHP 5.2.3 
  4. 將 SimplePie 的 stupidly fast 功能打開,讓 SimplePie 與 MagpieRSS 的功能比較接近。否則 SimplePie 預設的動作中,作了不少的事。

測試結果如下: 

SimplePie(第一次讀取 RSS):
時間:7.50597 secs
記憶體:6667456 bytes

MagpieRSS(第一次讀取 RSS):
時間:12.83128 secs
記憶體:2340528 bytes

SimplePie(第二次讀取 RSS,使用快取):
時間:0.027497 secs
記憶體:4367264 bytes

MagpieRSS(第二次讀取 RSS,使用快取):
時間:0.007864 secs
記憶體:1957640 bytes

這結果看起來真的不錯,在第一次沒有 Cache 的情況下,SimplePie 解析 500 個項目的 RSS feed,在時間上比 MagpieRSS 來的快。可是在記憶體使用上則是 MagpieRSS 的 3 倍。可是在第二次讀取 RSS,並使用快取的情況下,MagpieRSS 就比 SimplePie 來的快。

不過很少有人的 Blog 的 RSS Feed 是有 500 個項目的吧?所以我用我自己的 Blog 的 RSS 2.0 來測試,結果如下:

SimplePie(第一次讀取 RSS):
時間:1.25598 secs
記憶體:640072 bytes

MagpieRSS(第一次讀取 RSS):
時間:1.295425 secs
記憶體:1158768 bytes

SimplePie(第二次讀取 RSS,使用快取):
時間:0.005092 secs
記憶體:483192 bytes

MagpieRSS(第二次讀取 RSS,使用快取):
時間:0 0.006621 secs
記憶體:176224 bytes

這結果真是讓我跌破眼鏡,竟然在第一次沒有任何 Cache的情況下,不管是在速度上還是記憶體用量上,SimplePie 均優於 MagpieRSS。可是在第二次使用 Cache 的情況下,MagpieRSS 還是比較好。

不過這裡有一個很重要的因素,讓我更想換成 SimplePie。因為在沒有任何特殊設定的情況下,SimplePie 讀出來的中文字是正確的,可是 MagpieRSS 是完全變成問號(因為轉碼錯誤)。

內部討論一下吧,如果沒有任何問題,我真的很想把 MagpieRSS 換成 SimplePie,不僅因為速度差不多,編碼可以完全正確解讀,而且還支持到 Atom 1.0!~除了記憶體用得比較凶一些,想不出有什麼不換的理由。

本篇文章同時貼在 SimplePie 的論壇:The testing benchmark of SimplePie(1.1) vs MagpieRSS(0.72)。 

真實引用網址:

http://blog.markplace.net/trackback.php?id=329

迴響 (7) · 引用 (0) 文章分類: 生活形態?LifeType?

迴響 ↓

  • 回覆: PHP RSS Parser 的比較(SimplePie vs. MagpieRSS)
    James  發表於 10/01/2008, 09:20

    如果記憶體的使用量可以降低的話.
    SimplePie真的就太棒了 ^^
    我之前測試的結果和你差不多,但是考量到記憶體使用量的部份.
    後來還是使用MagpieRSS,不過如你所說的對很多格式和中文的部份就要另外處理.
    這點就有點傷腦筋...

    如果需要測試的話,我也可以參一卡~~

  • markwu

    的確是~
    markwu  發表於 10/01/2008, 17:14

    我會跟 Oscar 再討論看看,其實如果只有 Feed Reader plugin 會用到 RSS Feed,我真的覺得直接換掉就算了~

  • PHPMailer 也可以走 SSL
    Tsung  發表於 14/01/2008, 03:40

    PHPMailer 也可以走 SSL, 拿 G Mail 來當 Mail Server 耶(我目前也是這樣子用. XDD)
    想問問除此之外, SwiftMailer 還有特別的好處嗎??

  • To Tsung
    Mark  發表於 15/01/2008, 05:30

    PHP Mailer 可以啊?我一直以為他是不行的呢!

    如果 PHPMailer 也可以做到,那改用 SwiftMailer 的唯一好處就是,他有人 maintain 啦!

  • 回覆: PHP RSS Parser 的比較(SimplePie vs. MagpieRSS)
    Sumiko  發表於 04/12/2008, 10:54

    請問phpamiler可以發送電子報(EDM)嗎?

  • 回覆: PHP RSS Parser 的比較(SimplePie vs. MagpieRSS)
    Benson  發表於 26/04/2010, 01:03

    請問一下
    MagpieRSS 中文轉碼錯誤
    是因為RSS Feed編碼的問題嗎?
    使用UTF8會有會有這樣的問題

    最近想做些功能使用MagpieRSS

  • markwu

    別用 MagpieRSS
    markwu  發表於 26/04/2010, 15:40

    MagpieRSS 應該年久失修了,改用其他的吧!SimplePie 是比較好的選擇。