feat: Show first result latency

This commit is contained in:
Myzel394 2024-02-19 21:49:38 +01:00
parent 9c3a48710d
commit 6a1bbe60ff
No known key found for this signature in database
GPG Key ID: DEC4AAB876F73185
2 changed files with 17 additions and 0 deletions

View File

@ -7,6 +7,8 @@ use lazy_static::lazy_static;
use reqwest::ClientBuilder; use reqwest::ClientBuilder;
use rocket::response::content::{RawCss, RawHtml}; use rocket::response::content::{RawCss, RawHtml};
use rocket::response::stream::TextStream; use rocket::response::stream::TextStream;
use rocket::time::Instant;
use utils::utils::Yieldable;
use crate::helpers::helpers::run_search; use crate::helpers::helpers::run_search;
use crate::static_files::static_files::read_file_contents; use crate::static_files::static_files::read_file_contents;
@ -54,6 +56,8 @@ async fn hello<'a>(query: &str) -> RawHtml<TextStream![String]> {
let completed_ref_writer = completed_ref.clone(); let completed_ref_writer = completed_ref.clone();
let brave_ref = Arc::new(Mutex::new(Brave::new())); let brave_ref = Arc::new(Mutex::new(Brave::new()));
let brave_ref_writer = brave_ref.clone(); let brave_ref_writer = brave_ref.clone();
let mut brave_first_result_has_yielded = false;
let brave_first_result_start = Instant::now();
let client = Arc::new(Box::new( let client = Arc::new(Box::new(
ClientBuilder::new().user_agent(USER_AGENT).build().unwrap(), ClientBuilder::new().user_agent(USER_AGENT).build().unwrap(),
)); ));
@ -92,6 +96,13 @@ async fn hello<'a>(query: &str) -> RawHtml<TextStream![String]> {
} }
drop(completed); drop(completed);
if !brave_first_result_has_yielded {
let diff = brave_first_result_start.elapsed().whole_milliseconds();
brave_first_result_has_yielded = true;
yield format!("<strong>Time taken: {}ms</strong>", diff);
}
for ii in (current_index + 1)..len { for ii in (current_index + 1)..len {
let result = brave.results.get(ii).unwrap(); let result = brave.results.get(ii).unwrap();

View File

@ -323,4 +323,10 @@ pub mod utils {
} }
).to_string() ).to_string()
} }
pub enum Yieldable<T> {
AwaitingValue,
YieldRequired(T),
Completed(T),
}
} }