minimize vec resizing
This commit is contained in:
		@@ -71,7 +71,7 @@ pub async fn parse(db: &Surreal<Client>, site: &mut Website, data: &str) {
 | 
				
			|||||||
    site.store(db).await;
 | 
					    site.store(db).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // prep work
 | 
					    // prep work
 | 
				
			||||||
    let mut other_sites = Vec::new();
 | 
					    let mut other_sites: Vec<Website> = Vec::new();
 | 
				
			||||||
    { // using blocks to prevent compiler's async worries
 | 
					    { // using blocks to prevent compiler's async worries
 | 
				
			||||||
        let _t = Timer::start("Parsed page");
 | 
					        let _t = Timer::start("Parsed page");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -84,8 +84,9 @@ pub async fn parse(db: &Surreal<Client>, site: &mut Website, data: &str) {
 | 
				
			|||||||
        let tokenizer = Tokenizer::new(site.clone(), TokenizerOpts::default());
 | 
					        let tokenizer = Tokenizer::new(site.clone(), TokenizerOpts::default());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // go thru buffer
 | 
					        // go thru buffer
 | 
				
			||||||
        while let TokenizerResult::Script(sites) = tokenizer.feed(&mut token_buffer) {
 | 
					        while let TokenizerResult::Script(mut sites) = tokenizer.feed(&mut token_buffer) {
 | 
				
			||||||
            other_sites.push(sites);
 | 
					            other_sites.append(&mut sites);
 | 
				
			||||||
 | 
					            // other_sites.push(sites);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert!(token_buffer.is_empty());
 | 
					        assert!(token_buffer.is_empty());
 | 
				
			||||||
@@ -93,16 +94,12 @@ pub async fn parse(db: &Surreal<Client>, site: &mut Website, data: &str) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut links_to = Vec::new();
 | 
					        let mut links_to = Vec::with_capacity(other_sites.len());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // this is a 2d vec accidentally
 | 
					 | 
				
			||||||
        for a in other_sites {
 | 
					        for a in other_sites {
 | 
				
			||||||
            for b in a {
 | 
					            let other = a.store(db).await;
 | 
				
			||||||
                // TODO this can become a JoinSet later
 | 
					            if let Some(o) = other {
 | 
				
			||||||
                let other = b.store(db).await;
 | 
					                links_to.push(o);
 | 
				
			||||||
                if let Some(o) = other {
 | 
					 | 
				
			||||||
                    links_to.push(o);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user