mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 02:48:24 +00:00
perf(compile): read embedded files as static references when UTF-8 and reading as strings (#27033)
This commit is contained in:
parent
76daa03aa9
commit
f161adf19e
19 changed files with 158 additions and 61 deletions
|
@ -1,5 +1,6 @@
|
|||
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
use core::str;
|
||||
use std::borrow::Cow;
|
||||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
|
@ -288,7 +289,7 @@ pub trait FileSystem: std::fmt::Debug + MaybeSend + MaybeSync {
|
|||
&self,
|
||||
path: &Path,
|
||||
access_check: Option<AccessCheckCb>,
|
||||
) -> FsResult<Vec<u8>> {
|
||||
) -> FsResult<Cow<'static, [u8]>> {
|
||||
let options = OpenOptions::read();
|
||||
let file = self.open_sync(path, options, access_check)?;
|
||||
let buf = file.read_all_sync()?;
|
||||
|
@ -298,7 +299,7 @@ pub trait FileSystem: std::fmt::Debug + MaybeSend + MaybeSync {
|
|||
&'a self,
|
||||
path: PathBuf,
|
||||
access_check: Option<AccessCheckCb<'a>>,
|
||||
) -> FsResult<Vec<u8>> {
|
||||
) -> FsResult<Cow<'static, [u8]>> {
|
||||
let options = OpenOptions::read();
|
||||
let file = self.open_async(path, options, access_check).await?;
|
||||
let buf = file.read_all_async().await?;
|
||||
|
@ -327,17 +328,25 @@ pub trait FileSystem: std::fmt::Debug + MaybeSend + MaybeSync {
|
|||
&self,
|
||||
path: &Path,
|
||||
access_check: Option<AccessCheckCb>,
|
||||
) -> FsResult<String> {
|
||||
) -> FsResult<Cow<'static, str>> {
|
||||
let buf = self.read_file_sync(path, access_check)?;
|
||||
Ok(string_from_utf8_lossy(buf))
|
||||
Ok(string_from_cow_utf8_lossy(buf))
|
||||
}
|
||||
async fn read_text_file_lossy_async<'a>(
|
||||
&'a self,
|
||||
path: PathBuf,
|
||||
access_check: Option<AccessCheckCb<'a>>,
|
||||
) -> FsResult<String> {
|
||||
) -> FsResult<Cow<'static, str>> {
|
||||
let buf = self.read_file_async(path, access_check).await?;
|
||||
Ok(string_from_utf8_lossy(buf))
|
||||
Ok(string_from_cow_utf8_lossy(buf))
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
fn string_from_cow_utf8_lossy(buf: Cow<'static, [u8]>) -> Cow<'static, str> {
|
||||
match buf {
|
||||
Cow::Owned(buf) => Cow::Owned(string_from_utf8_lossy(buf)),
|
||||
Cow::Borrowed(buf) => String::from_utf8_lossy(buf),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue