> -- Vlad писал(а):
> И? Все нормальные ЯВУ (та же жаба, которая якобы калька с оберона) такого безобразия не позволяют.
Это какие такие нормальные ЯВУ? Java и C# что ли? Так там нулями забивают, а этожуткая потеря производительности.
Вот смотрите: 6.119 секунд супротив 35.932 секунды:
## Код:
```
MODULE TestPenalty;

  IMPORT Log, Services;
  
  TYPE
    Data* = RECORD
      x*, y*, z*, u*, v*, w*, p*, q*, r*: REAL
    END;

  PROCEDURE Do (VAR a: Data; level: INTEGER);
    VAR b: Data;
  BEGIN IF level > 0 THEN Do(b, level-1); Do(b, level-1) END
  END Do;

  PROCEDURE Main*;
    VAR t: LONGINT; a: Data;
  BEGIN
    t := Services.Ticks();
    Do(a, 28);
    t := Services.Ticks() - t;
    Log.Int(SHORT(t))
  END Main;

END TestPenalty.
```


## Код:
```
namespace ValueTypePenalty
{
  public struct Data
  {
    public double x, y, z, u, v, w, p, q, r;
  }

  class Program
  {
    static void Do (ref Data a, int level)
    {
      Data b = new Data(); // здесь структура b, зачем-то, забивается нулями, отсюда тормоза...
      if (level > 0)
      {
        Do(ref b, level-1);
        Do(ref b, level-1);
      }
    }

    static void Main (string[] args)
    {
      int t = System.Environment.TickCount;
      Data a = new Data();
      Do(ref a, 28);
      t = System.Environment.TickCount - t;
      System.Console.WriteLine("t = " + t);
      System.Console.ReadLine();
    }
  }
}
```
