message: only take 23ns to read archive
diff: @@ -35,6 +35,11 @@ use wasmer_vm::{
  FunctionBodyPtr, MemoryStyle, ModuleInfo, TableStyle, VMFunctionBody, VMSharedSignatureIndex,
  VMTrampoline,
  };
  +use rkyv::{ser::{Serializer as RkyvSerializer, SharedSerializer, serializers::WriteSerializer}, archived_value,
  + de::deserializers::AllocDeserializer,
  + Deserialize as RkyvDeserialize,
  + ser::adapters::SharedSerializerAdapter,
  +};
  /// A compiled wasm module, ready to be instantiated.
  pub struct NativeArtifact {
  @@ -549,6 +554,20 @@ impl NativeArtifact {
  let metadata: ModuleMetadata = bincode::deserialize(metadata_slice)
  .map_err(|e| DeserializeError::CorruptedBinary(format!("{:?}", e)))?;
  println!("{:?}", now.elapsed());
  +
  + let mut serializer = SharedSerializerAdapter::new(WriteSerializer::new(vec![0u8;8]));
  + let pos = serializer.serialize_value(&metadata)
  + .expect("failed to archive test");
  + let mut bytes = serializer.into_inner().into_inner();
  + bytes[0..8].copy_from_slice(&pos.to_le_bytes());
  +
  + let now = std::time::Instant::now();
  + let mut pos: [u8; 8] = Default::default();
  + pos.copy_from_slice(&bytes[0..8]);
  + let pos: u64 = u64::from_le_bytes(pos);
  + let archived = unsafe { archived_value::<ModuleMetadata>(&bytes[8..], pos as usize )};
  + println!("rkyv {:?}", now.elapsed());
  +
  let mut engine_inner = engine.inner_mut();
  Self::from_parts(&mut engine_inner, metadata, shared_path, lib)
  