fast mul by 10
This commit is contained in:
		
							parent
							
								
									862702b9c7
								
							
						
					
					
						commit
						38f813a5e6
					
				| @ -383,8 +383,13 @@ macro_rules! construct_uint { | ||||
| 
 | ||||
| 			/// TODO: optimize, throw appropriate err
 | ||||
| 			fn from_dec_str(value: &str) -> Result<Self, Self::Err> { | ||||
| 				let ten = $name::from(10u64); | ||||
| 				Ok(value.bytes().map(|b| b - 48).fold($name::from(0u64), | acc, c | acc * ten + $name::from(c) )) | ||||
| 				Ok(value.bytes() | ||||
| 				   .map(|b| b - 48) | ||||
| 				   .fold($name::from(0u64), | acc, c | 
 | ||||
| 						 // fast multiplication by 10
 | ||||
| 						 // (acc << 3) + (acc << 1) => acc * 10
 | ||||
| 						 (acc << 3) + (acc << 1) + $name::from(c) | ||||
| 					)) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user