chore(profiling): markup composite render path

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-10-24 10:43:31 -04:00
parent 9ccbaf2db8
commit 892d77d4e3
4 changed files with 35 additions and 11 deletions

View File

@@ -545,6 +545,7 @@ pub struct LatestTexture {
pub request_next_repaint: Option<SystemTime>,
}
#[profiling::function]
pub fn get_render_state<'a>(
ctx: &egui::Context,
images: &'a mut Images,

View File

@@ -231,6 +231,7 @@ pub struct SupportedMimeType {
}
impl SupportedMimeType {
#[profiling::function]
pub fn from_extension(extension: &str) -> Result<Self, Error> {
if let Some(mime) = mime_guess::from_ext(extension)
.first()
@@ -269,8 +270,13 @@ fn is_mime_supported(mime: &mime_guess::Mime) -> bool {
mime.type_() == mime_guess::mime::IMAGE
}
#[profiling::function]
fn url_has_supported_mime(url: &str) -> MimeHostedAtUrl {
if let Ok(url) = Url::parse(url) {
let url = {
profiling::scope!("url parse");
Url::parse(url)
};
if let Ok(url) = url {
if let Some(mut path) = url.path_segments() {
if let Some(file_name) = path.next_back() {
if let Some(ext) = std::path::Path::new(file_name)
@@ -289,6 +295,7 @@ fn url_has_supported_mime(url: &str) -> MimeHostedAtUrl {
MimeHostedAtUrl::Maybe
}
#[profiling::function]
pub fn supported_mime_hosted_at_url(urls: &mut UrlMimes, url: &str) -> Option<MediaCacheType> {
match url_has_supported_mime(url) {
MimeHostedAtUrl::Yes(cache_type) => Some(cache_type),

View File

@@ -705,16 +705,22 @@ fn render_reaction_cluster(
underlying_note: &Note,
reaction: &ReactionUnit,
) -> RenderEntryResponse {
let profiles_to_show: Vec<ProfileEntry> = reaction
.reactions
.values()
.filter(|r| !mute.is_pk_muted(r.sender.bytes()))
.map(|r| &r.sender)
.map(|p| ProfileEntry {
record: note_context.ndb.get_profile_by_pubkey(txn, p.bytes()).ok(),
pk: p,
})
.collect();
let profiles_to_show: Vec<ProfileEntry> = {
profiling::scope!("vec profile entries");
reaction
.reactions
.values()
.filter(|r| !mute.is_pk_muted(r.sender.bytes()))
.map(|r| &r.sender)
.map(|p| {
profiling::scope!("ndb by pubkey");
ProfileEntry {
record: note_context.ndb.get_profile_by_pubkey(txn, p.bytes()).ok(),
pk: p,
}
})
.collect()
};
render_composite_entry(
ui,
@@ -728,6 +734,7 @@ fn render_reaction_cluster(
}
#[allow(clippy::too_many_arguments)]
#[profiling::function]
fn render_composite_entry(
ui: &mut egui::Ui,
note_context: &mut NoteContext,
@@ -772,6 +779,7 @@ fn render_composite_entry(
.show(ui, |ui| {
let show_label_newline = ui
.horizontal_wrapped(|ui| {
profiling::scope!("header");
let pfps_resp = ui
.allocate_ui_with_layout(
vec2(ui.available_width(), 32.0),
@@ -832,6 +840,7 @@ fn render_composite_entry(
.inner;
if let Some(desc) = show_label_newline {
profiling::scope!("description");
ui.add_space(4.0);
ui.horizontal(|ui| {
ui.add_space(48.0);
@@ -868,6 +877,7 @@ fn render_composite_entry(
RenderEntryResponse::Success(action)
}
#[profiling::function]
fn render_profiles(
ui: &mut egui::Ui,
profiles_to_show: Vec<ProfileEntry>,
@@ -895,11 +905,14 @@ fn render_profiles(
}
let resp = ui.horizontal(|ui| {
profiling::scope!("scroll area");
ScrollArea::horizontal()
.scroll_bar_visibility(ScrollBarVisibility::AlwaysHidden)
.show(ui, |ui| {
profiling::scope!("scroll area closure");
let mut last_pfp_resp = None;
for entry in profiles_to_show {
profiling::scope!("actual rendering individual pfp");
let mut resp = ui.add(
&mut ProfilePic::from_profile_or_default(img_cache, entry.record.as_ref())
.size(24.0)

View File

@@ -144,9 +144,11 @@ fn render_pfp(
match cur_state.texture_state {
notedeck::TextureState::Pending => {
profiling::scope!("Render pending");
egui::InnerResponse::new(None, paint_circle(ui, ui_size, border, sense))
}
notedeck::TextureState::Error(e) => {
profiling::scope!("Render error");
let r = paint_circle(ui, ui_size, border, sense);
show_one_error_message(ui, &format!("Failed to fetch profile at url {url}: {e}"));
egui::InnerResponse::new(
@@ -159,6 +161,7 @@ fn render_pfp(
)
}
notedeck::TextureState::Loaded(textured_image) => {
profiling::scope!("Render loaded");
let texture_handle =
ensure_latest_texture(ui, url, cur_state.gifs, textured_image, animation_mode);