JEE與Spring Boot程式碼效能比較
JavaEE與Spring Boot其實很難比較測試,前者適合單體SOA架構,後者適合微服務,但是還是有好事者把兩者放在一起比較效能。
我把一些JEE和Spring程式碼放在一起做了同樣的事情。Spring做了一些開箱即用的好東西,所以我在一些JEE示例中複製了它以提高效能。
測試環境:IBM JRE 8.0.5.22、IBM Liberty 18.0.0.3 App Server、底層使用Ubuntu Linux 18.04.1 LTS和SQL/">MySQL 5.7.24以及MySQL 8.0.13 JDBC驅動程式。
硬體:採用AMD 2700x Ryzen處理器,在2600 GHz頻率下具有32 GB記憶體。
實際結果:
- Spring可以節省一些編碼時間
- Spring通常會為效能做出很好的選擇,但是加入到JEE應用程式時,這些優勢就會消失。
- Spring執行save()或findAll()之類方法時不履行@Transactional,Spring會更改隔離級別和事務傳播。這使得Spring在執行非更新資料庫的功能時具有優勢,但是IMO,Spring應該真正尊重設定的隔離級別和傳播。當改變JEE中的方法的隔離級別和傳播時,JEE會更快。
簡單REST呼叫 LibertyperfRESTJEE3631 ms LibertyperfRESTSpring2909 ms SpringBootperfRESTSpring3064 ms REST with JPA LibertyperfRESTJPAJEE65531 ms LibertyperfRESTJPASpring37076 ms SpringBootperfRESTJPASpring37757 ms REST with JPA (EclipseLink) LibertyperfRESTJPASpring-EL37709 ms SpringBootperfRESTJPASpring-EL76791 ms