perf(transcode): eliminate double buffer copy by accepting Bytes instead of &[u8]

Change ImageTranscodePort::get_transcoded signature from &[u8] to Bytes.
- Rayon closure now receives Bytes::clone() (O(1) ref-count) instead of .to_vec() (~5 MB copy)
- Fallback path returns owned Bytes directly instead of Bytes::from(to_vec()) (~5 MB copy)
- Caller passes content.clone() (O(1)) instead of implicit deref

Saves ~10 MB of allocation per transcode call on a 5 MB image.
This commit is contained in:
Dionisio
2026-02-24 12:48:08 +01:00
parent d907a3eb63
commit 0986ebf81c
3 changed files with 10 additions and 7 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ pub trait ImageTranscodePort: Send + Sync + 'static {
async fn get_transcoded(
&self,
file_id: &str,
original_content: &[u8],
original_content: Bytes,
original_mime: &str,
target_format: OutputFormat,
) -> Result<(Bytes, String, bool), DomainError>;