Задумался я, что лучше использовать (BlackBox или Java), если по ходу дела требуется много и упорно считать (в основном целочисленная арифметика большой точности). Почему выбор из этих двух? Просто на Java есть опыт, а Компонентный Паскаль легко освоить. В BlackBox есть модуль Integers. Делаем простой тест:
считаем факториал 20000 в BlackBox и Java. Получаем что Java быстрее в три раза.
На моей машине время вычислений такое: Java 4 sec, BlackBox 14  sec.
Java
## Код:
```
import java.math.*;

public class Main {

public static void main(String[] args) {
  long start = System.currentTimeMillis();
  BigInteger res = fact(20000);
  long stop = System.currentTimeMillis();
  System.out.println(stop - start);
}
   
private static BigInteger fact(int n) {
  BigInteger res = BigInteger.ONE;
  BigInteger i = res.add(BigInteger.ONE);
  for(int j=2; j<=n; j++) {
    res = res.multiply(i);
    i = i.add(BigInteger.ONE);          
  }
  return res;
}
```


BlackBox
## Код:
```
MODULE FactTest;
IMPORT StdLog, Dates, Integers;

VAR
  BigOne: Integers.Integer;

PROCEDURE Write( x: Integers.Integer);
VAR i: INTEGER;
BEGIN
  IF Integers.Sign(x) < 0 THEN StdLog.String("-") END;
  i := Integers.Digits10Of(x);
  IF i # 0 THEN REPEAT DEC(i); StdLog.Char(Integers.ThisDigit10(x, i)) UNTIL i = 0
    ELSE StdLog.String("0")
  END
END Write;
   
PROCEDURE Fact(n: INTEGER): Integers.Integer;
VAR  i: INTEGER; x, y: Integers.Integer;
BEGIN
  i := 2; x := BigOne; y := Integers.Sum(BigOne, BigOne);
 WHILE i <= n DO x := Integers.Product(x, y); y := Integers.Sum(y, BigOne); INC(i) END;
 RETURN x;
END Fact;

PROCEDURE TimeToInt(t: Dates.Time): INTEGER;
BEGIN
  RETURN t.hour * 3600 + t.minute * 60 + t.second;
END TimeToInt;

PROCEDURE TestDate*;
VAR t: Dates.Time; n1, n2: INTEGER; m: Integers.Integer;
BEGIN
  Dates.GetTime(t); n1 := TimeToInt(t);
  m := Fact(20000);
  Dates.GetTime(t); n2 := TimeToInt(t);
  (* Write(m); StdLog.Ln;  *)
  StdLog.Int(n2 - n1); StdLog.Ln
END TestDate;

BEGIN
  BigOne := Integers.Long(1);
END FactTest.

FactTest.TestDate
```

Хотелось бы понять, с чем это связано, с неэффективной реализацией алгоритмов в BlackBox или время тратится на работу с памятью?