الحد الأقصى التراكمي، حساب لكل سجل الوالدين

StackOverflow https://stackoverflow.com/questions/933942

  •  06-09-2019
  •  | 
  •  

سؤال

هل استخدم أي شخص الحد الأقصى التراكمي funcrtoid ولاحظ مشاكل الأداء؟

الملخص
إذا أراد المرء تعيين القيمة القصوى للحقل، فيمكنك استخدام الحد الأقصى التراكمي funcrtoid.

مشكلة
بعد أن استخدمنا ذلك لفترة من الوقت لاحظنا الأداء المتدهورة على ملفات أكبر.

فحص إشعارات XSLT واحدة بحيث يتم حساب الحد الأقصى لكل سجل حلقات ...

يمكن للمرء نقل الحساب إلى الوالد الكبير، وأشر إلى XSLT الجديد في مسار XSL المخصص، لكنني أحب حقا الاحتفاظ بإمكانية الخريطة في أداة تعيين.

أي اقتراحات؟

أطيب التحيات
مارتن يجلب

http://martinbring.blogspot.com.

هل كانت مفيدة؟

المحلول

عن طريق إزالة الحد الأقصى التراكمي وإضافة 3 functoids البرمجة النصية، القيام بالحساب بطريقة أخرى، تم حل المشكلة. انخفض وقت رسم الخرائط بعامل 40.

تم الآن تعيين 11 ميغابايت، 10 000 صفوف، في 200 دقيقة الآن في 5 دقائق.

المحلول
واحد funcrtoid البرمجة النصية، "مضمنة قالب المكالمات XSLT" مع عدم وجود إدخال أو إخراج، يحتوي على الجزء الأقصى () من المكتبة من Exslt وجدت مكتبة الرياضيات هنا. وبعد بدلا من استخدام المكتبة بأكملها، قمت بفحص الملف و "المستخرجة" القالب Max ().

 <xsl:template name="GetMax">
   <xsl:param name="nodes" /> 

    <xsl:choose>
      <xsl:when test="not($nodes)">NaN</xsl:when> 
      <xsl:otherwise>
        <xsl:for-each select="$nodes">
          <xsl:sort data-type="number" order="descending" /> 
          <xsl:if test="position() = 1">
          <xsl:value-of select="number(.)" /> 
        </xsl:if>
       </xsl:for-each>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>

واحد funcrtoid البرمجة النصية، "مضمنة قالب الاتصال XSLT" مع عدم وجود إدخال أو إخراج، يحتوي على متغير يحدد نقاط السمة في القالب مع مجموعة العقدة لحساب

<xsl:variable name="var:MaxValueDate">
    <xsl:call-template name ="GetMax">
            <xsl:with-param name ="nodes" select="Root//Parent/ValueToCalculate" />
    </xsl:call-template>
</xsl:variable>  

واحد funcrtoid البرمجة النصية، "مضمنة XSLT" مع إخراج واحد، باستخدام المتغير لملء عنصر الإخراج بقيمته.

<OutputElement>
        <xsl:value-of select="$var:MaxValueDate" />
</OutputElement>

هاهو!

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