anchor.diff:      member val Position6 = position with get, set
       member val Position7 = position with get, set
   
  -type BigPositionComponent2 (position : Vector3) =
  -    inherit Component ()
  -
  -    member val Position1 = position with get, set
  -    member val Position2 = position with get, set
  -    member val Position3 = position with get, set
  -    member val Position4 = position with get, set
  -    member val Position5 = position with get, set
  -    member val Position6 = position with get, set
  -    member val Position7 = position with get, set
  -
  -type BigPositionComponent3 (position : Vector3) =
  -    inherit Component ()
  -
  -    member val Position1 = position with get, set
  -    member val Position2 = position with get, set
  -    member val Position3 = position with get, set
  -    member val Position4 = position with get, set
  -    member val Position5 = position with get, set
  -    member val Position6 = position with get, set
  -    member val Position7 = position with get, set
  -
  -type BigPositionComponent4 (position : Vector3) =
  -    inherit Component ()
  -
  -    member val Position1 = position with get, set
  -    member val Position2 = position with get, set
  -    member val Position3 = position with get, set
  -    member val Position4 = position with get, set
  -    member val Position5 = position with get, set
  -    member val Position6 = position with get, set
  -    member val Position7 = position with get, set
  -
  -type BigPositionComponent5 (position : Vector3) =
  -    inherit Component ()
  -
  -    member val Position1 = position with get, set
  -    member val Position2 = position with get, set
  -    member val Position3 = position with get, set
  -    member val Position4 = position with get, set
  -    member val Position5 = position with get, set
  -    member val Position6 = position with get, set
  -    member val Position7 = position with get, set
  -
   let proto () =
       entity {
           add (PositionComponent Unchecked.defaultof<Vector3>)
           add (SubSystemComponent ())
           add (BigPositionComponent1 Unchecked.defaultof<Vector3>)
  -        add (BigPositionComponent2 Unchecked.defaultof<Vector3>)
  -        add (BigPositionComponent3 Unchecked.defaultof<Vector3>)
  -        add (BigPositionComponent4 Unchecked.defaultof<Vector3>)
  -        add (BigPositionComponent5 Unchecked.defaultof<Vector3>)
       }
   
   type title =
  
positive.code:                 }
              plotOptions =
                  {
                      series = { pointStart = 2010 }
                  }
              series = 
                  [|
                      test1
                      test2
                  |]
          }
  
  
negative.code: 
  [<EntryPoint>]
  let main argv = 
      let amount = 10000
      let world = World (65536)
  
      let rng = Random ()
      let arr = Array.init amount (fun i -> i)
      let arrRng = Array.init amount (fun i -> rng.Next(0, amount))
  
      let data = Array.init amount (fun _ -> BigPositionComponent1 Unchecked.defaultof<Vector3>)
      let dataRng = Array.init amount (fun i -> data.[arrRng.[i]])
  
      let mutable result = Unchecked.defaultof<Vector3>
  
      let test1 = perfRecord "Cache Local" 1000 (fun () ->
          for i = 1 to 10 do
              for i = 0 to data.Length - 1 do
                  result <- data.[i].Position7
      )
  
      let test2 = perfRecord "Cache Local Index" 1000 (fun () ->
          for i = 1 to 10 do
              for i = 0 to data.Length - 1 do
                  result <- data.[arr.[i]].Position7
      )
  
      let test3 = perfRecord "Non-Cache Local Index" 1000 (fun () ->
          for i = 1 to 10 do
              for i = 0 to data.Length - 1 do
                  result <- data.[arrRng.[i]].Position7
      )
  
      let test4 = perfRecord "Non-Cache Local" 1000 (fun () ->
          for i = 1 to 10 do
              for i = 0 to dataRng.Length - 1 do
                  result <- dataRng.[i].Position7
      )
  
      let entities = ResizeArray ()
      for i = 0 to amount - 1 do
          entities.Add <| world.EntityManager.Spawn (proto ())
  
      for i = 0 to amount - 1 do
          if i % 2 = 0 then
              entities.[i]
              |> world.EntityManager.Destroy
             // entities.RemoveAt i
  
      for i = 0 to amount - 1 do
          if i % 2 = 0 then
              entities.Add <| world.EntityManager.Spawn (proto ())
  
      let test5 = perfRecord "ECS Iteration Non-Cache Local" 1000 (fun () ->
          for i = 1 to 10 do
              world.EntityManager.ForEach<BigPositionComponent1> (fun _ c -> result <- c.Position7)
      )
  
      let test6 = perfRecord "ECS Iteration Non-Cache Local - Smaller Two Comps" 1000 (fun () ->
          for i = 1 to 10 do
              world.EntityManager.ForEach<SubSystemComponent, PositionComponent> (fun _ _ c -> result <- c.Position)
      )
  
      let test7 = perfRecord "ECS Iteration Non-Cache Local - Smaller" 1000 (fun () ->
          for i = 1 to 10 do
              world.EntityManager.ForEach<PositionComponent> (fun _ c -> result <- c.Position)
      )
  
      let test8 = perfRecord "ECS Iteration Non-Cache Local - One Small + One Big" 1000 (fun () ->
          for i = 1 to 10 do
              world.EntityManager.ForEach<SubSystemComponent, BigPositionComponent1> (fun _ _ c -> result <- c.Position7)
      )
  
      let chartData =
          {
              title = { text = "Iteration Performance" }
              subtitle = { text = "" }
              yAxis =
                  {
                      title = { text = "ms" }
                      max = 3
                  }
              legend =
                  {
  