2013-04-13 9 views
20

का अनुवाद करते हैं मैं इस तरह के rect या line के रूप में सरल वस्तुओं स्थिति मैं transform विशेषता या x और y विशेषताओं का उपयोग करना चाहिए करना चाहते हैं?: बनाम स्थिति x और y

// this 
d3.selectAll('rect') 
    .attr('x', Number) 
    .attr('y', 0) 

// or this? 
d3.selectAll('rect') 
    .attr("transform", function(d) { return 'translate(' + d + ', 0)' }); 

प्रदर्शन अंतर क्या है?

+0

यह कहा जाता है को बदलने कि ब्राउज़र बलों सामान प्रस्तुत करने के लिए जीपीयू का उपयोग करने के लिए। मैंने transform3d का उपयोग कर एंड्रॉइड ब्राउज़र में एक उल्लेखनीय अंतर देखा। लेकिन दूसरों के साथ, प्रदर्शन वही था। –

+3

@ पार्थिक गोसर आप एसवीजी में 'transform3d' तत्व नहीं बदल सकते हैं। – Duopixel

उत्तर

17

एसवीजी transform में हार्डवेयर त्वरित नहीं है। उनके पास एकल तत्वों (मेरे अनुभव में) के लिए समान प्रदर्शन है। हालांकि, मैं transform अधिक यदि आप उपयोग नहीं कर रहे का उपयोग चारों ओर स्थानांतरित करने के लिए बात है क्योंकि एसवीजी में नहीं सभी तत्वों को एक x या y गुण, पर विचार ...

<line x1="0" y1="0" x2="100" y2="100" /> 
<circle cx="100" cy="100" r="100" /> 
<path d="M 0 0 L 100 100" /> 
<rect x="0" y="0" width="100" height="100" /> 

आप इन तत्वों में से प्रत्येक के लिए एक अलग कार्यान्वयन लिखना चाहिए । एक ऐसा क्षेत्र है जहां transform वास्तव में तेजी से होता है, तत्वों की एक बड़ी संख्या बढ़ रहा है अगर आपके पास ...

<g transform="translate(100, 100)"> 
    <line x1="0" y1="0" x2="100" y2="100" /> 
    <circle cx="100" cy="100" r="100" /> 
    <path d="M 0 0 L 100 100" /> 
    <rect x="0" y="0" width="100" height="100" /> 
</g> 

यह प्रत्येक तत्व चलती से गहन कम प्रसंस्करण हो जाएगा व्यक्तिगत रूप से

+1

मैं दूसरी चीजों को स्थानांतरित करने के लिए 'ट्रांसफॉर्म' का उपयोग करने की सिफारिश करता हूं। एक और मामूली बात यह है कि यह दो की बजाय एक विशेषता को संशोधित करता है, जो सामान्य रूप से बेहतर होता है। मुझे कम से कम एक कार्यान्वयन पता है जो svg में परिवर्तन से संबंधित कुछ चीजों को अनुकूलित करता है। –

+0

सीएसएस ट्रांसफॉर्म का उपयोग करने पर कोई विचार लाभ प्राप्त करेगा या यह वही होगा? मेरे पास एक ऐप है जहां मैं प्रत्येक माउस व्हील के लिए माउस पॉइंट में ज़ूम करता हूं और यह फिर से बह रहा है, पूरे व्यू-पोर्ट को फिर से चित्रित कर रहा है। मैं देख रहा हूं कि मैं हार्डवेयर त्वरण से कुछ लाभ प्राप्त कर सकता हूं, – themanwhosoldtheworld

संबंधित मुद्दे