私のアプリは、グラフィカルに複雑なインタラクティブコントロールを使用しています。それらは古いデバイスではゆっくりと実行されています。実際のレンダリングは速く、インストゥルメントのアプリケーションをプロファイリングすると、ほとんどの作業はexecuteJSCall
で行われ、問題がJavaScriptかブリッジのシリアル化にあることが示唆されます。どのようなツールを使って絞り込むことができますか?React Nativeを使ったJSのプロファイリング
答えて
RNに組み込まれているSystraceは、アプリで何が起こっているかについての有益な情報を提供しません。私の所見からは、React Nativeの内部動作の多くが示されていますが、アプリケーションの実際のコードを特定するのに直接役立つものではありません。
Slowlogは、パフォーマンスのボトルネックを探す場所に関する詳細を教えてくれました。機能レベルでは限界がありますが、Systraceよりも優れています。
this SO answerもチェックしてください。モバイル側
、我々は/使用が特定のコンポーネントを更新/ インポートパフォーマンス・
import PrefMonitor from 'react-native/Libraries/Performance/RCTRenderingPerf';
スタート測定
PrefMonitor.toggle();
PrefMonitor.start();
停止測定をマウントする無駄な時間を測定するRCTRenderingPerfを使用することができ印刷結果
PrefMonitor.stop();
結果を印刷するためにprintメソッドを明示的に呼び出す必要はありません。stop()
は既にそれをカバーしています。 あなたはまた、AndroidのUIのパフォーマンスをチェックするためにsystrace
を使用することができhttps://facebook.github.io/react-native/docs/performance.html#profiling
あなたがcommand+D
を押してDebug on remote JS
を有効にしていることを確認してくださいとDebug remote JS
を選択し、それはコンポーネントおよびネストされた子コンポーネント
のそれぞれについて、レンダリング時間をベーステーブルが表示されます以下は、それをフックするためのソースコードですApp.js
export default class App extends React.Component {
constructor(props){
super(props)
this.state= {index:1}
}
_setIndex(idx){
PrefMonitor.toggle();
PrefMonitor.start();
this.setState({index:idx})
}
componentDidUpdate(){
PrefMonitor.stop();
}
render() {
return (
<View style={styles.container}>
<Text>Welcome to react-native {helloWorld()}</Text>
<Text>Open up App.js to start working on your app!</Text>
<Text>Changes you make will automatically reload.</Text>
<Text>Shake your phone to open the developer menu.</Text>
<Button title="click me to see profiling in console log" onPress={()=> this._setIndex(2)}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
- 1. React-Native pass他のjsへのTextinputvalue
- 2. React Native公式のfbsdkを使ったログイン
- 3. React-Nativeを使用したアプリケーションのナビゲーション
- 4. React Native JS:コンポーネントクラスが必要です。[オブジェクトオブジェクト]
- 5. React NativeでReact JSコンポーネントを再利用する方法
- 6. React Nativeプロジェクトのvanilla JSファイルの使用方法は?
- 7. React/React Nativeグローバルスコープ
- 8. React-Native-Meteorの更新React-Native 0.33
- 9. react-native-router-fluxでreact-native-side-menuを使用するには?
- 10. React Nativeを使用したリモートアラート(ページャ)システム
- 11. React Nativeのクロスプラットフォーム
- 12. React Nativeのオブジェクト
- 13. React-native React-Native-fs(IOS)を使用してPDFファイルを書き込む
- 14. React Native React Native TabBarIOSのスタイルをカスタマイズする
- 15. React Nativeを使ってUWPアプリケーションを作成するには?
- 16. React-nativeのReadableMapインターフェイスはJSをJAVAに変換しますか?
- 17. React Native - NavbarのnavigationBarでToolbarAndroidを使用
- 18. React/React-Native Refs [固定]
- 19. React Native - initialProperties Android
- 20. setTimeout in React Native
- 21. React Native - ハイフネーション
- 22. React Native with Socket.io
- 23. React Native NavigatorIOS
- 24. update react-native listview
- 25. SHA256 in React Native
- 26. React Native Android Webview
- 27. React Native onPressIn
- 28. React Native Linking SMS
- 29. React Native Changeナビゲーションバーフォント
- 30. React Native NavigationHeader.BackButton.Color
JSをプロファイリングする方法を理解する上で運がいいですか?私は同様の問題に直面している。 – Karthik207
ええ、デバッグメニューを開いてStart Systraceをタップすると、プロファイリングが開始されます。あなたが終わったら、それをやめてください。しかし、報告書は最初は開かれません。 [ここ](http://stackoverflow.com/questions/16644116/unable-to-view-html-trace-report-generated-by-systrace-tool-in-android-sdk)をチェックしてください。 –