الفرق بين المراجعتين ل"ReactNative/systrace"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب' = Systrace = إن <code>Systrace</code> هي أداة تعريف الأداء وتعتمد على العلامات (marker-based profiling tool) المعيارية لم...')
 
ط (مراجعة)
سطر 1: سطر 1:
 
+
<noinclude>{{DISPLAYTITLE:Systrace في React Native}}</noinclude>
= Systrace =
+
إن <code>Systrace</code> هي أداة تعريف الأداء، تعتمد على العلامات (marker-based profiling tool) المعيارية لمنصة Android، وتُثبّت مع حزمة أدوات منصّة Android. تُحاط كتل الشفرة البرمجيّة المشخَّصة بوسوم البداية، والنهاية فتظهر على شكل مخططٍ ملوَّنٍ. وتحوي كل من Android SDK، وReact Native  على الوسوم المعيارية التي يمكن إظهارها.
إن <code>Systrace</code> هي أداة تعريف الأداء وتعتمد على العلامات (marker-based profiling tool) المعيارية لمنصة Android (وتُثبّت مع حزمة أدوات منصّة Android). تُحاط كتل الشفرة البرمجيّة المشخَّصة بوسوم البداية والنهاية فتظهر على شكل مخططٍ ملوَّنٍ. وتحوي كلا المنصتين Android SDK وReact Native  الوسوم المعيارية التي يمكن إظهارها.
+
__toc__
 
 
 
== مثال ==
 
== مثال ==
تسمح <code>Systrace</code> بوسم أحداث JavaScript (JS) بوسمٍ وبقيمةٍ صحيحةٍ. هذا المثال لالتقاط أحداث JS غير المرتبطة بالزمن (non-Timed) ضمن EasyProfiler.  
+
تسمح <code>Systrace</code> بوسم أحداث ‪‏‫‬‫‪‎‎‏JavaScript (JS) بوسمٍ وبقيمةٍ صحيحةٍ. هذا المثال لالتقاط أحداث JS غير المرتبطة بالزمن (non-Timed) ضمن EasyProfiler   
  
 
* مثال لمكون دالة (Function Component Example)
 
* مثال لمكون دالة (Function Component Example)
سطر 127: سطر 126:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static beginEvent(profileName?, args?)
 
static beginEvent(profileName?, args?)
</syntaxhighlight>يُستخدم لبدء التشخيص.
+
</syntaxhighlight>يُستخدم هذا التابع لبدء التشخيص.
  
 
=== <code>endEvent()</code> ===
 
=== <code>endEvent()</code> ===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static endEvent()
 
static endEvent()
</syntaxhighlight>يُستخدم لإنهاء التشخيص، ويطلب بعد بدء التابع <code>beginEvent()</code> بالتشخيص ضمن إطار مكدس الاستدعاءات.
+
</syntaxhighlight>يُستخدم هذا التابع لإنهاء التشخيص، ويطلب بعد بدء التابع <code>beginEvent()</code> التشخيص ضمن إطار مكدس الاستدعاءات.
  
 
=== <code>beginAsyncEvent()</code> ===
 
=== <code>beginAsyncEvent()</code> ===
سطر 147: سطر 146:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static counterEvent(profileName?, value?)
 
static counterEvent(profileName?, value?)
</syntaxhighlight>يُستخدم لتسجيل قيمة المتغيّر <code>profileName</code> ضمن الخط الزمني <code>Systrace</code>.
+
</syntaxhighlight>يُستخدم هذا التابع لتسجيل قيمة المتغيّر <code>profileName</code> ضمن الخط الزمني <code>Systrace</code>.
  
 
== مصادر ==
 
== مصادر ==
  
 
* [https://facebook.github.io/react-native/docs/systrace صفحة Systrace في توثيق React Native الرسميّ]
 
* [https://facebook.github.io/react-native/docs/systrace صفحة Systrace في توثيق React Native الرسميّ]
 +
[[تصنيف:ReactNative]]

مراجعة 06:26، 7 يناير 2021

إن Systrace هي أداة تعريف الأداء، تعتمد على العلامات (marker-based profiling tool) المعيارية لمنصة Android، وتُثبّت مع حزمة أدوات منصّة Android. تُحاط كتل الشفرة البرمجيّة المشخَّصة بوسوم البداية، والنهاية فتظهر على شكل مخططٍ ملوَّنٍ. وتحوي كل من Android SDK، وReact Native على الوسوم المعيارية التي يمكن إظهارها.

مثال

تسمح Systrace بوسم أحداث ‪‏‫‬‫‪‎‎‏JavaScript (JS) بوسمٍ وبقيمةٍ صحيحةٍ. هذا المثال لالتقاط أحداث JS غير المرتبطة بالزمن (non-Timed) ضمن EasyProfiler

  • مثال لمكون دالة (Function Component Example)
import React from "react";
import { Button, Text, View, StyleSheet, Systrace } from "react-native";

const App = () =>  {

  const enableProfiling = () => {
    Systrace.setEnabled(true); // Call setEnabled to turn on the profiling.
    Systrace.beginEvent('event_label')
    Systrace.counterEvent('event_label', 10);
  }

  const stopProfiling = () => {
    Systrace.endEvent()
  }

  return (
    <View style={styles.container}>
      <Text style={[styles.header, styles.paragraph]}>React Native Systrace API</Text>
      <Button title="Capture the non-Timed JS events in EasyProfiler" onPress={()=> enableProfiling()}/>
      <Button title="Stop capturing" onPress={()=> stopProfiling()} color="#FF0000"/>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
    paddingTop: 44,
    padding: 8
  },
   header: {
    fontSize: 18,
    fontWeight: "bold",
    textAlign: "center"
  },
  paragraph: {
    margin: 24,
    textAlign: "center"
  }
});

export default App;

  • مثال لمكون صنف (Class Component Example )
import React, { Component } from "react";
import { Button, Text, View, StyleSheet, Systrace } from "react-native";

class App extends Component {

  enableProfiling = () => {
    Systrace.setEnabled(true); // Call setEnabled to turn on the profiling.
    Systrace.beginEvent('event_label')
    Systrace.counterEvent('event_label', 10);
  }

  stopProfiling = () => {
    Systrace.endEvent()
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={[styles.header, styles.paragraph]}>React Native Systrace API</Text>
        <Button title="Capture the non-Timed JS events in EasyProfiler" onPress={()=> this.enableProfiling()}/>
        <Button title="Stop capturing" onPress={()=> this.stopProfiling()} color="#FF0000"/>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
    paddingTop: 44,
    padding: 8
  },
   header: {
    fontSize: 18,
    fontWeight: "bold",
    textAlign: "center"
  },
  paragraph: {
    margin: 24,
    textAlign: "center"
  }
});

export default App;

التوابع

installReactHook()

static installReactHook(useFiber)

setEnabled()

static setEnabled(enabled)

isEnabled()

static isEnabled()

beginEvent()

static beginEvent(profileName?, args?)

يُستخدم هذا التابع لبدء التشخيص.

endEvent()

static endEvent()

يُستخدم هذا التابع لإنهاء التشخيص، ويطلب بعد بدء التابع beginEvent() التشخيص ضمن إطار مكدس الاستدعاءات.

beginAsyncEvent()

static beginAsyncEvent(profileName?)

يُستخدم التابع beginAsyncEvent() لبدء التشخيص ثم يقوم التابعendAsyncEvent() بإنهائه، ويمكن أن يحصل الإنهاء ضمن عمليّةٍ (thread) أخرى أو خارج إطار مكدس الاستدعاءات، مثل انتظار إعادة قيمة المتغير cookie المستخدم كدخل في استدعاء تابع الإنهاء endAsyncEvent().

endAsyncEvent()

static endAsyncEvent(profileName?, cookie?)

counterEvent()

static counterEvent(profileName?, value?)

يُستخدم هذا التابع لتسجيل قيمة المتغيّر profileName ضمن الخط الزمني Systrace.

مصادر