سؤال

بدأت تطوير تطبيق ويب في بي وآمل أن أصبحت شعبية بشكل لا يصدق و تجعلني الشهيرة و الغنية.:-)

إذا يأتي ذلك الوقت ، قرار ما إذا كان تحليل API بيانات XML مع SimpleXML أو استخدام json_decode يمكن أن تحدث فرقا في التطبيق قابلية.

لا أحد يعرف أي من هذه النهج هو أكثر كفاءة عن الخادم ؟

تحديث: ركضت بدائية اختبار لمعرفة الطريقة التي كانت أكثر performant.يبدو أن json_decode هو أسرع قليلا من تنفيذ simplexml_load_string.هذا ليس بشكل رهيب قاطعة لأنه لا اختبار أشياء مثل قابلية من العمليات المتزامنة.استنتاجي هو أن وسوف تذهب مع SimpleXML في الوقت الحاضر بسبب دعمها XPath التعبيرات.

<?php

$xml  = file_get_contents('sample.xml');
$json = file_get_contents('sample.js');

$iters = 1000;

// simplexml_load_string
$start_xml = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
}
$end_xml = microtime(true);

// json_decode
$start_json = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = json_decode($json);
}
$end_json = microtime(true);

?>
<pre>XML elapsed: <?=sprintf('%.4f', ($end_xml - $start_xml))?></pre>
<pre>JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?></pre>

النتيجة:

XML elapsed: 9.9836
JSON elapsed: 8.3606
هل كانت مفيدة؟

المحلول

كما "أخف" تنسيق أتوقع سلمان أن يكون قليلا أقل إرهاقا على الخادم, ولكن أشك في أنها سوف تكون أكبر مشكلة الأداء تجد نفسك تتعامل مع موقع الويب الخاص بك ينمو في شعبية.استخدام تنسيق أيهما كنت أكثر ارتياحا.

بدلا من ذلك, إذا كنت تعرف كيف عليك أن تكون هيكلة البيانات الخاصة بك ، يمكنك محاولة صنع XML تنسيق نسخة JSON-تنسيق الإصدار فقط تشغيله ضد الإعداد بضع مئات من آلاف مرات لمعرفة ما اذا كان يجعل فارق ملحوظ.

نصائح أخرى

هناك فقط طريقة واحدة لتحديد ما الذي سوف يكون من الأسهل على الخادم الخاص بك في التطبيق الخاص بك مع البيانات الخاصة بك.

اختبار!

أود أن تولد بعض البيانات التي تبدو مشابهة إلى ما سوف يكون ترجمة واستخدام واحدة من اختبار وحدة الأطر لفك ذلك عدة آلاف من المرات باستخدام كل من SimpleXML و json_decode يكفي للحصول على نتائج ذات مغزى.ثم يمكنك أن تقول لنا ما عملت.

آسف هذا ليس نوع من الجواب كنت تبحث عنه, ولكن في الواقع, انها الطريقة الوحيدة للقيام بذلك.حظا سعيدا!

ليست إجابة على السؤال, ولكن هل يمكن أن مجرد الانتظار حتى يكون لديك الكثير من المستخدمين ضرب النظام الخاص بك.كنت قد يفاجأ حيث الاختناقات في الواقع كذبة:

http://gettingreal.37signals.com/ch04_Scale_Later.php

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top