feat: Implement baseline profile generation and startup benchmarking
- Added baseline profile generator for Rosetta Messenger to optimize startup performance. - Created startup benchmark tests to measure cold start times under different compilation modes. - Introduced a new Gradle module for baseline profile and benchmark tests. - Updated ChatsListViewModel to show loading skeleton while data is being fetched. - Improved keyboard handling in MessageInputBar by using SHOW_IMPLICIT instead of SHOW_FORCED. - Minor code cleanups and optimizations across various components.
This commit is contained in:
@@ -1,47 +1,108 @@
|
||||
# Baseline Profile для Rosetta Messenger
|
||||
# Предкомпилирует критические функции при установке APK
|
||||
# Baseline Profile for Rosetta Messenger
|
||||
# AOT-compiles critical classes and methods at APK install time
|
||||
|
||||
# ============ Keyboard & Animation (приоритет #1) ============
|
||||
# MessageInputBar - основной источник JIT лага
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->MessageInputBar-c4CPeSU(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ZJJJJLjava/util/List;ZLkotlin/jvm/functions/Function0;Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/focus/FocusRequester;Lapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;Landroidx/compose/runtime/Composer;III)V
|
||||
|
||||
# AnimatedKeyboardTransition - fade анимация
|
||||
HSPLapp/rosette/android/ui/keyboard/AnimatedKeyboardTransitionKt;->AnimatedKeyboardTransition(Lapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;ZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
|
||||
|
||||
# KeyboardTransitionCoordinator - управление состоянием
|
||||
HSPLapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;->updateKeyboardHeight(F)V
|
||||
HSPLapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;->requestShowEmoji(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
|
||||
HSPLapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;->requestShowKeyboard(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
|
||||
|
||||
# ============ EmojiPicker (приоритет #2) ============
|
||||
# OptimizedEmojiPicker - основной UI эмодзи
|
||||
HSPLcom/rosetta/messenger/ui/components/emoji/OptimizedEmojiPickerKt;->OptimizedEmojiPicker(Lkotlin/jvm/functions/Function1;FLandroidx/compose/runtime/Composer;I)V
|
||||
|
||||
# EmojiPickerContent - рендеринг эмодзи
|
||||
HSPLcom/rosetta/messenger/ui/components/emoji/OptimizedEmojiPickerKt;->EmojiPickerContent(Lkotlin/jvm/functions/Function1;FLandroidx/compose/runtime/Composer;I)V
|
||||
|
||||
# ============ ChatsListScreen (приоритет #3) ============
|
||||
# DialogItem - вызывает JIT компиляцию (6101KB)
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->DialogItem(Lcom/rosetta/messenger/ui/chats/DialogUiModel;ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
|
||||
|
||||
# Главный экран списка чатов
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->ChatsListScreen(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;III)V
|
||||
|
||||
# ============ ChatDetailScreen (приоритет #4) ============
|
||||
# Главный экран чата
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->ChatDetailScreen(Lcom/rosetta/messenger/network/SearchUser;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
|
||||
|
||||
# MessageBubble - рендеринг сообщений
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->MessageBubble(Lcom/rosetta/messenger/data/local/entity/Message;ZZZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
|
||||
|
||||
# ============ Navigation (приоритет #5) ============
|
||||
# MainActivity и навигация
|
||||
# 1. APP STARTUP
|
||||
HSPLcom/rosetta/messenger/RosettaApplication;->onCreate()V
|
||||
HSPLcom/rosetta/messenger/MainActivity;->onCreate(Landroid/os/Bundle;)V
|
||||
HSPLcom/rosetta/messenger/MainActivityKt;->MainScreen(Lcom/rosetta/messenger/data/DecryptedAccount;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V
|
||||
|
||||
# ============ Common Compose (приоритет #6) ============
|
||||
# Часто используемые Compose компоненты
|
||||
HSPLandroidx/compose/foundation/lazy/LazyListState;->scrollToItem(IILkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)V
|
||||
HSPLandroidx/compose/animation/core/Animatable;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
HSPLandroidx/compose/animation/AnimatedContentKt;->AnimatedContent(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Alignment;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
|
||||
# 2. CRYPTO
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->getPbkdf2Key(Ljava/lang/String;)Ljavax/crypto/spec/SecretKeySpec;
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->decryptWithPassword(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->decryptWithPasswordInternal(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->isOldFormat(Ljava/lang/String;)Z
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->decompress([B)[B
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->encryptWithPassword(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->compress([B)[B
|
||||
HSPLcom/rosetta/messenger/crypto/CryptoManager;->clearCaches()V
|
||||
HSPLcom/rosetta/messenger/crypto/MessageCrypto;->**(**)**
|
||||
HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;)**
|
||||
HSPLjavax/crypto/Cipher;->doFinal([B)**
|
||||
HSPLjavax/crypto/SecretKeyFactory;->getInstance(Ljava/lang/String;)**
|
||||
HSPLorg/bouncycastle/jce/**;->**(**)**
|
||||
HSPLcom/google/crypto/tink/subtle/XChaCha20Poly1305;->**(**)**
|
||||
|
||||
# 3. DATABASE
|
||||
HSPLcom/rosetta/messenger/database/RosettaDatabase;->**(**)**
|
||||
HSPLcom/rosetta/messenger/database/RosettaDatabase_Impl;->**(**)**
|
||||
HSPLcom/rosetta/messenger/database/DialogDao_Impl;->**(**)**
|
||||
HSPLcom/rosetta/messenger/database/MessageDao_Impl;->**(**)**
|
||||
HSPLandroidx/room/RoomDatabase;->**(**)**
|
||||
HSPLandroidx/room/Room;->**(**)**
|
||||
|
||||
# 4. VIEWMODELS
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListViewModel;->**(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatViewModel;->**(**)**
|
||||
|
||||
# 5. COMPOSE UI
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->ChatsListScreen(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->DialogItem(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->ChatsListSkeleton(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->SkeletonDialogItem(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatsListScreenKt;->SwipeableDialogItem(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->ChatDetailScreen(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->MessageBubble(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/ChatDetailScreenKt;->MessageInputBar-c4CPeSU(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/components/ChatDetailComponentsKt;->**(**)**
|
||||
HSPLcom/rosetta/messenger/ui/chats/input/ChatDetailInputKt;->**(**)**
|
||||
|
||||
# 6. KEYBOARD
|
||||
HSPLapp/rosette/android/ui/keyboard/AnimatedKeyboardTransitionKt;->AnimatedKeyboardTransition(**)**
|
||||
HSPLapp/rosette/android/ui/keyboard/KeyboardTransitionCoordinator;->**(**)**
|
||||
|
||||
# 7. EMOJI
|
||||
HSPLcom/rosetta/messenger/ui/components/emoji/OptimizedEmojiPickerKt;->**(**)**
|
||||
HSPLcom/rosetta/messenger/ui/components/OptimizedEmojiCache;->**(**)**
|
||||
HSPLcom/rosetta/messenger/ui/components/AppleEmojiEditTextKt;->**(**)**
|
||||
|
||||
# 8. AVATAR
|
||||
HSPLcom/rosetta/messenger/ui/components/AvatarImageKt;->**(**)**
|
||||
HSPLcom/rosetta/messenger/utils/AvatarBitmapCache;->**(**)**
|
||||
HSPLcom/rosetta/messenger/utils/AvatarFileManager;->**(**)**
|
||||
HSPLcom/rosetta/messenger/repository/AvatarRepository;->**(**)**
|
||||
|
||||
# 9. NAVIGATION
|
||||
HSPLcom/rosetta/messenger/MainActivityKt;->MainScreen(**)**
|
||||
HSPLcom/rosetta/messenger/ui/components/SwipeBackContainerKt;->SwipeBackContainer(**)**
|
||||
|
||||
# 10. NETWORK
|
||||
HSPLcom/rosetta/messenger/data/MessageRepository;->**(**)**
|
||||
HSPLcom/rosetta/messenger/network/ProtocolManager;->**(**)**
|
||||
HSPLcom/rosetta/messenger/network/WebSocketManager;->**(**)**
|
||||
|
||||
# 11. COMPOSE FRAMEWORK
|
||||
HSPLandroidx/compose/foundation/lazy/**;->**(**)**
|
||||
HSPLandroidx/compose/runtime/**;->**(**)**
|
||||
HSPLandroidx/compose/ui/**;->**(**)**
|
||||
HSPLandroidx/compose/animation/**;->**(**)**
|
||||
HSPLandroidx/compose/material3/**;->**(**)**
|
||||
HSPLandroidx/compose/foundation/**;->**(**)**
|
||||
|
||||
# 12. COROUTINES
|
||||
HSPLkotlinx/coroutines/**;->**(**)**
|
||||
|
||||
# 13. PROFILEINSTALLER
|
||||
HSPLandroidx/profileinstaller/**;->**(**)**
|
||||
|
||||
# 14. LOTTIE
|
||||
HSPLcom/airbnb/lottie/**;->**(**)**
|
||||
|
||||
# 15. COIL
|
||||
HSPLcoil/**;->**(**)**
|
||||
|
||||
# CLASS PRELOADING
|
||||
Lcom/rosetta/messenger/MainActivity;
|
||||
Lcom/rosetta/messenger/RosettaApplication;
|
||||
Lcom/rosetta/messenger/crypto/CryptoManager;
|
||||
Lcom/rosetta/messenger/crypto/MessageCrypto;
|
||||
Lcom/rosetta/messenger/database/RosettaDatabase;
|
||||
Lcom/rosetta/messenger/database/RosettaDatabase_Impl;
|
||||
Lcom/rosetta/messenger/database/DialogDao_Impl;
|
||||
Lcom/rosetta/messenger/database/MessageDao_Impl;
|
||||
Lcom/rosetta/messenger/ui/chats/ChatsListViewModel;
|
||||
Lcom/rosetta/messenger/ui/chats/ChatViewModel;
|
||||
Lcom/rosetta/messenger/data/MessageRepository;
|
||||
Lcom/rosetta/messenger/network/ProtocolManager;
|
||||
Lcom/rosetta/messenger/network/WebSocketManager;
|
||||
Lcom/rosetta/messenger/ui/components/OptimizedEmojiCache;
|
||||
Lcom/rosetta/messenger/utils/AvatarBitmapCache;
|
||||
Lcom/rosetta/messenger/repository/AvatarRepository;
|
||||
|
||||
Reference in New Issue
Block a user