क्या JSF वास्तव में उच्च प्रदर्शन वेब एप्लिकेशन देने के लिए तैयार है? [बन्द है]


16

मैंने जेएसएफ के बारे में बहुत कुछ सुना है, लेकिन जहां तक ​​मुझे पता है कि लोगों को अतीत में इस तकनीक के साथ बहुत गंभीर शिकायतें थीं, न जाने कितनी स्थिति में सुधार हुआ है। हम जेएसएफ को एक सामाजिक नेटवर्क परियोजना के लिए एक संभावित प्रौद्योगिकी के रूप में मान रहे हैं। लेकिन हम JSF के प्रदर्शन स्कोर के बारे में नहीं जानते हैं और न ही हम वास्तव में किसी भी मौजूदा उच्च प्रदर्शन वेबसाइट पर आ सकते हैं जो JSF का उपयोग कर रही थी। लोग इसके प्रदर्शन मापनीयता के मुद्दों के बारे में शिकायत करते हैं।

अगर हम jsf चुनकर सही काम कर रहे हैं, तो हम अभी भी बहुत निश्चित नहीं हैं, और इस तरह आप सभी से इस बारे में सुनना चाहते हैं और आपके इनपुट पर विचार करेंगे।

क्या सामाजिक नेटवर्किंग सेवा की उच्च प्रदर्शन आवश्यकताओं को पूरा करने के लिए JSF को कॉन्फ़िगर करना संभव है? साथ ही जेएसएफ में वर्तमान समस्याओं के साथ किस हद तक जीवित रहना संभव है। वास्तव में इसकी समस्याएं क्या हैं?


मैं JSF के साथ विकास की जटिलताओं के बारे में चिंतित नहीं हूं कि दूसरे लोग आमतौर पर क्या शिकायत करते हैं क्योंकि मेरे व्यक्तिगत अनुभव के अनुसार मेरा मानना ​​है कि यह बिल्कुल सच नहीं है, लेकिन मैं किस प्रदर्शन और स्केलेबिलिटी मुद्दों के बारे में अधिक चिंतित हूं। और कृपया पिछले संस्करणों से जुड़े अपने पुराने मुद्दों पर इसका दुरुपयोग न करें। मुझे बस वर्तमान स्थिति की परवाह है जो भी इसका अतीत था।


7
ptrthomas.wordpress.com/2009/05/15/jsf-sucks मुझे पता है कि जेएसएफ के मुख्य वास्तुकार द्वारा एक प्रतिक्रिया दी गई है जो हर निर्णय को सही ठहराती है, लेकिन मेरे लिए, जो कुछ वेब प्रौद्योगिकियों को जानता है और जो जेएसएफ से भी पीड़ित हैं। 2.0, फेसलेट्स और SEAM, यह मजाक है। यहां तक ​​कि जेम्स गोस्लिंग साईस: "मैं एक जुनून के साथ जेएसएफ से नफरत करता हूं।" मैं विकेट या टेपेस्ट्री का उपयोग करता हूं और JSF और इसकी समस्याओं से पूरी तरह बचता हूं।
फाल्कन

12
@ ThorbjørnRavnAndersen मैं आपसे धीरे-धीरे असहमत हूं। मुझे लगता है कि यह बेहतर है कि केवल यह कहने से अधिक स्पष्टीकरण प्रदान करें: "मुझे JSF से नफरत है"
चिरोन

6
@ ThorbjørnRavnAndersen मैं आपकी बात समझता हूं लेकिन मैं वास्तव में लोगों को अधिक जानकारी प्रदान करने के लिए प्रोत्साहित करता हूं। उदाहरण के लिए, एक टिप्पणी के बिना एक डाउन वोट हमेशा मुझे परेशान करता है।
चिरोन

3
@Chiron, सवाल यह नहीं है कि JSF प्रयोग करने योग्य है या नहीं, लेकिन अगर JSF को प्रदर्शन करने के लिए बनाया जा सकता है। जो लोग रूपरेखा नीचे रखकर शुरू करते हैं, वे ज्यादातर वास्तविक प्रश्न का उत्तर नहीं दे सकते हैं। खुद JSF एप्लिकेशन को बनाए रखना, मैं भी जानना चाहूंगा।

3
> यहां तक ​​कि जेम्स गोस्लिंग साईस: "मैं एक जुनून के साथ जेएसएफ से नफरत करता हूं।" - यह अच्छी तरह से ज्ञात है कि यह एक गलती थी, क्योंकि वह जेएसपी कहने का मतलब था। प्रश्न में खंड को ध्यान से सुनें। यह क्लासिक एएसपी के जवाब में क्या बनाया गया था, और यह जेएसपी था, जेएसएफ नहीं।
अर्जन टिजम्स

जवाबों:


24

JSF निश्चित रूप से उच्च प्रदर्शन वेब एप्लिकेशन देने में सक्षम है। वर्तमान में मैं जिस ऐप पर काम कर रहा हूं वह पूरी तरह से जेएसएफ में है और लॉग आँकड़ों से मैं देख सकता हूं कि कई गैर-डीबी गहन पृष्ठों में न्यूनतम निष्पादन समय 0ms और औसत समय 10ms से कम है।

विकेट के कुछ लोग JSF के प्रदर्शन के बारे में बातें करते रहे हैं, लेकिन इस विस्तृत बेंचमार्क के अनुसार JSF वास्तव में विकेट से बेहतर प्रदर्शन करता है: http://prezi.com/dr3on1qcajzw/www-world-wide-wait-devoxx-edition/

ध्यान दें कि जब तक सर्वर संतृप्त नहीं होता है, तब तक JSF GWT से बेहतर प्रदर्शन करता है। GWT / JSF बेंचमार्क तुलना हालांकि मुश्किल है, क्योंकि यह वास्तव में महत्वपूर्ण है कि GWT के लिए सर्वर भी उस डेटाबैक में डेटा का रूपांतरण और सत्यापन करता है जो JSF करता है। यह कुछ ऐसा है जिसे आप अभ्यास में नहीं छोड़ सकते (कभी भी ग्राहक पर भरोसा न करें)। इसके अलावा, जीडब्ल्यूटी बनाम जेएसएफ / विकेट ग्राफ़ के लिए, यह ध्यान में रखा जाना चाहिए कि ब्राउज़र का रेंडरिंग कदम जेएसएफ / विकेट के लिए तुच्छ है (क्योंकि वे ज्यादातर तैयार-टू-रेंडर HTML की सेवा करते हैं), लेकिन GWT अभी भी कुछ काम है सर्वर प्रतिक्रिया प्राप्त करने के बाद।

प्रमुख प्रदर्शन / स्केलेबिलिटी समस्याओं में से एक जो पुराने जेएसएफ संस्करण (2.0 से पहले) था, उसमें बहुत अधिक डेटा डालकर राज्य की बचत को दुरुपयोग कर रहा था। चीजें जो बिल्कुल वहाँ नहीं होनी चाहिए थीं, जहाँ इसे रखा गया था (जैसे स्थिरांक जैसे 'फू' जैसे <my:tag attribute="foo"/>)।

JSF 2.0 ने partial state savingतंत्र की शुरुआत की , जिसका अर्थ है कि केवल डेल्टा स्थिति को बचाया जा रहा है। व्यवहार में यह बहुत कम हो सकता है और JSF 1.x की तुलना में परिमाण के दो आदेशों की कटौती असामान्य नहीं है।

जेएसएफ का उपयोग करने के वर्षों के बाद, मैं कह सकता हूं कि जेएसएफ 1.x में बहुत अधिक राज्य को बचाने के अलावा, मैंने कभी भी किसी भी प्रदर्शन के मुद्दे पर नहीं चलाया है जिसे मैं जेएसएफ के लिए विशेषता दे सकता था। किसी भी प्रदर्शन की समस्याएं जो हम कभी भी DB और / या हम बैक-एंड सेवाओं को कैसे सेट करते हैं, हमारे प्रश्नों को लिखा था, आदि में निहित थे।


1
0 एमएस ... मुझे लगता है कि माप के आपके साधनों को देखने की जरूरत है।
gbjbaanb

2
@gbjbaanb मुझे ऐसा नहीं लगता, ये उन आंकड़ों से आए हैं जो काफी पेशेवर रूप से स्थापित थे। ध्यान दें कि मैं न्यूनतम समय और गैर-डीबी गहन पृष्ठों के बारे में बात कर रहा हूं । ऐसे समय में क्रियान्वित होने वाले पृष्ठों में स्पष्ट रूप से 100 पर फैले 1000 घटक नहीं थे। हम यहां अपेक्षाकृत सरल पृष्ठों के बारे में बात कर रहे हैं, हो सकता है कि 10 घटक, 1 मास्टर टेम्पलेट, शायद 1 भी शामिल हो, एक सर्वर पर जो कुछ समय से चल रहा है इसलिए सब कुछ गर्म और स्मृति में है। औसत समय अधिक है (जैसा कि मैंने उल्लेख किया है) मैक्स कुछ भी हो सकता है।
अर्जन टिज़म्स

स्थिति यह है कि यह दुनिया केवल उन चीजों की आलोचना करती है जो सभी समस्याओं को हल करने में सक्षम हैं। लेकिन यह कि सभी समस्याओं को हल करना हमेशा एक कीमत पर आता है और एक महान उत्साह और उत्साह की आवश्यकता होती है। मैंने टीमों में जो देखा है, वह जीवन-चक्र को समझे बिना भी विकसित होना शुरू कर देता है। इसमें एक कठिन सीखने की अवस्था शामिल है लेकिन यह सुंदर होने के साथ-साथ उल्लेखनीय भी है।
शिरगिल फरहान

सर्वर की तुलना में डेटाबेस / IO और बैंडविड्थ (मोबाइल ...) में अड़चन होने की अधिक संभावना है। अच्छी तरह से उपयोग किए जाने पर जावा वास्तव में तेज़ है।
क्रिस्टोफ रूसो

8

दुनिया में सभी सैद्धांतिक कह सकते हैं कि जेएसएफ अद्भुत है, लेकिन बस एक नज़र डालें कि आपके पृष्ठ क्या दिखते हैं। यह जावास्क्रिप्ट और अन्य बकवास के बड़े पैमाने पर ढेर पैदा करता है जो कि jQuery या CSS के स्वच्छ उपयोग जैसे मॉड्यूल में जोड़ने की आपकी क्षमता को गंभीर रूप से बाधा देने वाले हैं। यह कहते हुए कि यह नहीं किया जा सकता है, लेकिन किस कीमत पर।

अपेक्षाकृत छोटी परियोजना और मध्यम जटिलता के साथ व्यक्तिगत अनुभव। दुर्घटना। यह सभी कॉलबैक से संबंधित एक गड़बड़ थी और आप आसानी से अन्य तकनीकों में मिश्रण नहीं कर सकते। हमारे पास एक बड़ा बग था जो जेएसटीएल के साथ जेएसएफ के साथ मिश्रित होने के कारण निकला। हम कभी भी इस तथ्य के कारण सभी jQuery के सामान का उपयोग करने में सक्षम नहीं थे कि हर लिंक एक जावास्क्रिप्ट कॉलबैक है।

दूर भागते हैं और तेजी से भागते हैं।

साथ ही जब आप कहते हैं कि आप किस पैमाने पर बात कर रहे हैं। पृष्ठों की संख्या, उपयोगकर्ताओं की संख्या, प्रति सेकंड अनुरोधों की संख्या, सुविधाओं की संख्या। इनका उत्तर आपको मदद कर सकता है। जब कोई आपको बताता है तो उसे स्केल करने की जरूरत होती है कि वह किस डिग्री और कितनी तेजी से है। जवाब आपको जबरदस्त मदद करेगा। यदि आप एक सप्ताह में Google पैमाने पर बात कर रहे हैं या आप एक वर्ष में 1000 उपयोगकर्ताओं और प्रति दिन 10000 पृष्ठ विचारों के बारे में बात कर रहे हैं।

लगभग किसी भी फ्रेमवर्क, पृष्ठभूमि में वास्तविक समय में प्रतिक्रियाओं में टाइप करने के लिए, आप उपयोग के मामलों के 99.999% को पूरा करने के लिए पैमाने पर होंगे।


3
-1 किसी भी ढांचे के तराजू के लिए। यह कहने जैसा है कि "प्रदर्शन की परवाह मत करो।"
Raynos

3
में और अपने आप में कोई भी प्रकाशित वेब फ्रेमवर्क जेएसएफ सहित होगा। वे सब कहते हैं कि वे करते हैं, यह एक बहुत ही भद्दा ढांचा होगा अगर यह नहीं था। उस ने कहा, बहुत से लोग इसके साथ बेवकूफी करते हैं और आमतौर पर जहां स्केलिंग की समस्या उत्पन्न होती है।
बिल लीपर 14

1
सच है, लेकिन कुछ रूपरेखा आपको बाधा स्केलिंग वाली चीजों को करने के लिए प्रोत्साहित करती है, या तो क्योंकि फ्रेमवर्क प्रोत्साहित करता है या समुदाय इसे प्रोत्साहित करता है। मैं उन रूपरेखाओं पर बहस करूंगा।
रायनोस

"आप स्केलिंग कैसे मापते हैं" बिट को शायद सवाल के लिए एक टिप्पणी होना चाहिए?

4

अस्वीकरण: मुझे JSF पसंद है। वैसे भी, यहां तक ​​कि नवीनतम आरआई (मोजर्रा 2.2.x) या MyFaces के साथ भी, लंबे समय से प्रतीक्षित स्टेटलेस कार्यान्वयन प्रदर्शन बहुत खराब है। यह जेएसएफ जीवन चक्र और इस तथ्य के कारण है कि प्रत्येक दृश्य (महंगा) हर अनुरोध के लिए बनाया गया है।

एक सुराग पाने के लिए, यह एक सादे जावा सर्वलेट बनाम एक JSF पृष्ठ के खिलाफ एक सरल बेंचमार्क है, दोनों सिर्फ "क्लो" को प्रिंट कर रहे हैं

सर्वलेट

glassfish-3.1.2.2$ ab -n 10000 -c 100 http://localhost:8080/mavenproject-web/NewServlet

Server Software:        GlassFish
Server Hostname:        localhost
Server Port:            8080

Document Path:          /mavenproject-web/NewServlet
Document Length:        128 bytes

Concurrency Level:      100
Time taken for tests:   0.970 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      4300000 bytes
HTML transferred:       1280000 bytes
Requests per second:    10307.02 [#/sec] (mean)
Time per request:       9.702 [ms] (mean)
Time per request:       0.097 [ms] (mean, across all concurrent requests)
Transfer rate:          4328.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.0      1       5
Processing:     1    9   4.6      8      51
Waiting:        1    8   4.4      7      40
Total:          4   10   4.1      8      51

Percentage of the requests served within a certain time (ms)
  50%      8
  66%     10
  75%     11
  80%     11
  90%     12
  95%     14
  98%     29
  99%     33
 100%     51 (longest request)

JSF

glassfish-3.1.2.2$ ab -n 10000 -c 100 http://localhost:8080/mavenproject-web/xhtml/test/jsf.xhtml

Server Software:        GlassFish
Server Hostname:        localhost
Server Port:            8080

Document Path:          /mavenproject-web/xhtml/test/jsfxhtml
Document Length:        100 bytes

Concurrency Level:      100
Time taken for tests:   4.676 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      4250000 bytes
HTML transferred:       1000000 bytes
Requests per second:    2138.60 [#/sec] (mean)
Time per request:       46.759 [ms] (mean)
Time per request:       0.468 [ms] (mean, across all concurrent requests)
Transfer rate:          887.60 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       6
Processing:     5   46   6.0     46      73
Waiting:        2   45   5.5     45      72
Total:          8   47   5.8     46      73

Percentage of the requests served within a certain time (ms)
  50%     46
  66%     48
  75%     50
  80%     51
  90%     54
  95%     56
  98%     60
  99%     62
 100%     73 (longest request)

1
मुझे नहीं लगता कि एक साधारण हेलोवर्ल्ड पेज प्रतिनिधि या सार्थक हो सकता है। एक गंभीर तुलना को आवश्यक जानकारी प्रदान करनी चाहिए जैसे कि संस्करण संख्या, कॉन्फ़िगरेशन का उपयोग करना और इसी तरह। कृपया पिछले उत्तर में JSF और विकेट के बीच तुलना पढ़ें।
lu4242

मुझे असहमत होने दो। मुझे वास्तव में सार्थक लगता है कि सरलतम सांविधिक संदर्भ में jsf jsp की तुलना में 5 गुना धीमा है। यह सत्यापित करना तुच्छ है कि अधिक जटिल परिदृश्यों में jsf का प्रदर्शन सबसे खराब हो जाता है। या मैं laziest :-) jsf कार्यान्वयन के लिए और अधिक बेंचमार्क प्रदान कर सकता हूं जैसा कि ऊपर कहा गया है मोजरा 2.2,
ग्लासफिश

"... jsf jsp की तुलना में 5 गुना धीमा है ..." मुझे लगता है कि यहाँ गलती थ्रूपुट को ध्यान में नहीं रखती है, और jsp बनाम jsf का अंतर्निहित व्यवहार। यह व्याख्या करना बहुत जटिल है, लेकिन इस मामले में, प्रतिक्रिया समय स्पष्ट रूप से धीमा है, क्योंकि jsf का एक निर्णायक प्रभाव है जो jsp के पास नहीं है। लेकिन अंत में चक्र प्रति सेकंड की तुलना करना अधिक सटीक है। इसके अलावा, मोआजरा MyFaces के समान नहीं है, इसलिए दोनों कार्यान्वयन में प्रदर्शन के दृष्टिकोण से अलग-अलग संख्याएं हैं। ध्यान दें कि इस मामले में संक्षिप्तता प्रभाव समाप्त हो गया है।
lu4242

वास्तव में, एक सामान्य सर्वलेट बनाम JSF की तुलना करना पूरी तरह से बेतुका है। केवल तुलना करने वाले अर्थ में एक "एप्लिकेशन" है जो JSP / सर्वलेट्स बनाम किसी अन्य "एप्लिकेशन" का उपयोग करके बनाया गया है जो JSF का उपयोग करके बिल्कुल वैसा ही करता है। क्यों? क्योंकि JSF रेंडरिंग / अजाक्स / नेविगेशन / वेलिडेशन के लिए बिल्ट-इन सॉल्यूशन प्रदान करता है, जिन चीजों को स्क्रैच से या JSP में हाथ से करने की आवश्यकता होती है। भले ही तुलना प्रदर्शन के दृष्टिकोण से दिलचस्प हो (कोई रूपरेखा सर्वलेट / जेएसपी से तेज नहीं होगी), जेएसपी का जेएसएफ के लिए कोई मुकाबला नहीं है, क्योंकि यह एक छोटा हिस्सा भी नहीं करता है कि जेएसएफ आपके लिए क्या करता है।
lu4242

"यह एक सादे सर्वलेट बनाम JSF की तुलना करना पूरी तरह से बेतुका है"। नहीं यह नहीं। दोनों प्रौद्योगिकियां सामग्री वितरित करने वाली हैं। यही कारण है कि मैं स्टेटलेस संदर्भों को ध्यान में रख रहा हूं, जहां सत्यापन और अन्य चीजें बस गिनती नहीं करती हैं। "प्रतिक्रिया समय स्पष्ट रूप से धीमा है क्योंकि jsf का निर्णायक प्रभाव है कि jsp के पास नहीं है" क्या यह एक स्केलेबिलिटी समस्या नहीं है? myfaces, afaik mojarra के बारे में यह सबसे तेज़ कार्यान्वयन है (मैं इसकी जाँच करूँगा)
gpilotino

3

यदि आप अधिक स्पष्ट रूप से समझना चाहते हैं कि JSF (Mojarra 2.1.7 और MyFaces 2.1.7 दोनों) कैसा प्रदर्शन करता है और इसे Apache Wicket (1.4.20 और 1.5.5 दोनों) के समान ढांचे के खिलाफ तुलना करता है, तो इस पर एक नज़र डालें- गहरी तुलना (मई 2012):

जेएसएफ 2 और विकेट को समझना: प्रदर्शन की तुलना

अच्छा हिस्सा सब कुछ उपलब्ध है (कोड, प्रयोगात्मक डेटा, परीक्षण को कैसे पुन: पेश करें, विस्तृत विस्तृत रिपोर्ट के बारे में निर्देश)। यह JSF प्रदर्शन के बारे में आपके सभी प्रश्नों को हल करेगा, और आप देखेंगे कि Apache MyFaces क्या करने में सक्षम है।


3

एक लेख जो थोड़ी मदद कर सकता है (हालांकि वास्तव में निर्णायक नहीं) सर्वर सेंट्रिक जावा फ्रेमवर्क है: DZonealalobby पर प्रदर्शन की तुलना :

... यह आलेख बताता है कि सर्वर द्वारा प्रदान किए गए आंशिक परिवर्तनों पर एसपीआई जावा वेब फ्रेमवर्क के अधिकांश प्रभावी हैं। हम बिना सर्वर संचार वाली घटनाओं में रुचि नहीं रखते हैं, अर्थात्, बिना (संभव) सर्वर नियंत्रण वाली घटनाएं।

वे कैसे मापा जा रहे हैं

हम उस कोड की मात्रा को मापने जा रहे हैं जो ग्राहक को ग्राहक में किए गए दृश्य परिवर्तन के संबंध में भेजा जाता है

उदाहरण के लिए, एक घटक में मामूली दृश्य परिवर्तन (कुछ नया डेटा) के लिए हम सर्वर से बहुत अधिक कोड की अपेक्षा नहीं करते हैं, अर्थात, सादे HTML के रूप में आवश्यक नए मार्कअप, या जावास्क्रिप्ट में एम्बेडेड, या नए डेटा वाले कुछ उच्च स्तर के निर्देश होने चाहिए कल्पना। अन्यथा कुछ गलत लगता है उदाहरण के लिए पूर्ण घटक या पृष्ठ क्षेत्र फिर से बनाया गया है, बैंडविड्थ और क्लाइंट पावर (और शायद सर्वर पावर) को बर्बाद कर रहा है।

क्योंकि हम सार्वजनिक डेमो का उपयोग करेंगे, हमें एक निश्चित और बढ़िया अनाज बेंचमार्क नहीं मिलेगा । लेकिन आप चौखटे के बीच बहुत मजबूत अंतर देखेंगे।

परीक्षण तकनीक बहुत आसान है और हर कोई इसे बिना किसी विशेष बुनियादी ढांचे के कर सकता है, हमें बस फायरफॉक्स और फायरबग की आवश्यकता है। इस परीक्षण में फायरफॉक्स 3.6.8 और फायरबग 1.5.4 का उपयोग किया जाता है।

FireBug कंसोल "शो XMLHttpRequests" सक्षम होने पर सर्वर प्रतिक्रिया दिखाने वाले किसी भी AJAX अनुरोध को लॉग करता है ...

फ्रेमवर्क का परीक्षण किया

RichFaces , IceFaces , MyFaces / त्रिनिदाद , OpenFaces , PrimeFaces , Vaadin , ZK , ItsNat

... जाहिरा तौर पर गंभीर प्रदर्शन के दंड से मुक्त केवल JSF प्राइमफेस है ...

अगर मैं किसी को भी इसे देखने के लिए प्यार करता हूँ, तो मुझे एक उचित तुलना (प्रदर्शन के लिए) नहीं मिल पा रहा है!


2

सामान्य रूप से फेसलेट्स के साथ एक समस्या है जिसका उपयोग करने के लिए IMHO एक बहुत असुविधाजनक चीज है। यह वास्तव में आवश्यक की तुलना में चार गुना अधिक कीड़ा है और एक बार आप कुछ आदिम से एक कदम दूर करने के लिए बहुत अधिक मैनुअल काम की जरूरत है। हाइब्रिडजवा जेएसएफ के भीतर प्रस्तुति इंजन के रूप में फेसलेट्स के लिए एक अच्छा प्रतिस्थापन होगा - यह बहुत कम कीस्ट्रोक्स के साथ एक ही काम करता है (और इससे भी अधिक, विशेष रूप से - यह आपके लिए सभी "बाइंडिंग" और आईडी बनाता है)।


1

इसलिए मैं एक समान बेंचमार्क को फेंकना चाहता था। मैंने एक ट्विटर बूटस्ट्रैप उदाहरण पृष्ठ लिया और इसे एक्सएचटीएमएल में बदल दिया। उसके बाद, मैंने बिल्कुल एक ApplicationScoped CDI बीन की स्थापना की, जो हैलो, वर्ल्ड लौटा। मैंने पेज पर ईएल एक्सप्रेशन डाला। जेएसएफ संस्करण के लिए, मैंने जेएसएफ संसाधन हैंडलर का उपयोग किया, जेएसपीएक्स संस्करण के लिए, मैंने एचटीएमएल शैली सीएसएस और जेएस का उपयोग किया।

मैंने मुख्य पृष्ठ लोड समय का परीक्षण करने के लिए अपाचे बेंच का उपयोग किया। परीक्षण एक अन-ऑप्टिमाइज़्ड TomEE + v1.5.2 सर्वर पर किया गया था। मैंने प्रत्येक बेंचमार्क 5x चलाया, फिर माप लेने से पहले एक पूर्ण GC चलाया। जेवीएम को फिर से शुरू किए बिना एक ही जेवीएम उदाहरण में बॉस्केट परीक्षण किए गए थे। मेरे पास परिवाद पर एपीआर उपलब्ध है, लेकिन मुझे यकीन नहीं है कि इस परीक्षण को प्रभावित करता है।

JSF धीमा है, लेकिन बहुत कम नहीं, क्योंकि हम बहुत कम मात्रा में काम कर रहे हैं। क्या प्रदर्शित नहीं किया जाता है क्योंकि पेज अधिक जटिल होते हैं, जेएसएफ / जेएसपीएक्स स्केल को रैखिक रूप से या तेजी से करता है।

एक बात मैंने देखी कि जेएसएफ की तुलना में जेएसपीएक्स बहुत कम कचरा पैदा करता है। JSPX पेज पर बेंचमार्क चलाने से इस्तेमाल किया हुआ ढेर 184mb से 237mb तक कूद जाता है। जेएसएफ पेज पर एक ही जेवीएम में बेंचमार्क चलाने से उपयोग किए गए ढेर को 108mb से कम से कम 404mb तक कूदने का कारण बनता है , लेकिन उस बिंदु पर एक स्वचालित कचरा संग्रह किक होता है। ऐसा लगता है कि JSF के लिए आपका कचरा संग्रहकर्ता एक पूर्ण आवश्यकता है

JSF

jonfisher@peanut:~$ /usr/local/bin/ab -n 10000 -c 100 http://localhost:8080/cdi-jsp/index.jsf
This is ApacheBench, Version 2.3 <$Revision: 1373084 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        localhost
Server Port:            8080

Document Path:          /cdi-jsp/index.jsf
Document Length:        2904 bytes

Concurrency Level:      100
Time taken for tests:   2.138 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      32160000 bytes
HTML transferred:       29040000 bytes
Requests per second:    4677.27 [#/sec] (mean)
Time per request:       21.380 [ms] (mean)
Time per request:       0.214 [ms] (mean, across all concurrent requests)
Transfer rate:          14689.55 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.3      1      21
Processing:     1   20   9.0     18      63
Waiting:        1   19   8.8     17      62
Total:          2   21   8.8     20      64

Percentage of the requests served within a certain time (ms)
  50%     20
  66%     23
  75%     25
  80%     27
  90%     32
  95%     39
  98%     46
  99%     50
 100%     64 (longest request)

JSPX

jonfisher@peanut:~$ /usr/local/bin/ab -n 10000 -c 100 http://localhost:8080/cdi-jsp/page2.jspx
This is ApacheBench, Version 2.3 <$Revision: 1373084 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache-Coyote/1.1
Server Hostname:        localhost
Server Port:            8080

Document Path:          /cdi-jsp/page2.jspx
Document Length:        2440 bytes

Concurrency Level:      100
Time taken for tests:   1.273 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      26290000 bytes
HTML transferred:       24400000 bytes
Requests per second:    7856.63 [#/sec] (mean)
Time per request:       12.728 [ms] (mean)
Time per request:       0.127 [ms] (mean, across all concurrent requests)
Transfer rate:          20170.98 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5   2.3      6      20
Processing:     1    8   4.6      6      40
Waiting:        1    8   4.3      6      40
Total:          2   13   3.8     12      41

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     12
  75%     13
  80%     13
  90%     17
  95%     20
  98%     24
  99%     28
 100%     41 (longest request)

-3

GWT आपके जावा कोड को जावा स्क्रिप्ट में परिवर्तित करता है। इसलिए यह आपके क्लाइंट की तरफ एक जावा स्क्रिप्ट के रूप में चलता है। और यह भी, आप अपने gwt अनुप्रयोगों में सीएसएस को एकीकृत कर सकते हैं। सामान्य तौर पर, gwt हल्के वजन का होता है और बिना किसी समस्या के सभी ब्राउज़रों में चल सकता है। मैं JSF के बारे में ज्यादा नहीं जानता। लेकिन मुझे लगता है कि dt, JSF GWT की तरह लचीला नहीं है।


1
यह सवाल का जवाब नहीं देता है, जो जेएसएफ प्रदर्शन के बारे में है, न कि रूपरेखा की सिफारिश के बारे में। वैसे भी, GWT आमतौर पर लोगों द्वारा पसंद किया जाता है जो जावास्क्रिप्ट को नहीं जानते ^ ^
डेन्यूबियन नाविक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.