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:
2026-02-08 09:21:05 +05:00
parent 8b8c883a63
commit abe1a1a710
13 changed files with 1111 additions and 564 deletions

View File

@@ -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;