Lipetsk *nix Association Forum Lipetsk *nix Association Forum
Новости:
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
23 Ноября 2024, 22:54:17


Войти


Страниц: 1 2 [3] 4 5 6   Вниз
  Печать  
Автор Тема: Программирование под linux  (Прочитано 84628 раз)
0 Пользователей и 15 Гостей смотрят эту тему.
mini_root
Юзверь
**

Карма: -3
Сообщений: 62


Награды
« Ответ #30 : 04 Марта 2008, 14:38:55 »

Налету это значит, что компилируются те классы к которым в данный момент происходит обращение, причем заметь, что они именно компилируются, из-за этого выполнение программы несколько замедляется. Но опять же при выполнение особо ресурсоёмких кусков кода, когда производится обработка больших объёмов данных, откомпилированные классы остаются в памяти, соответственно в этом случае программа будет работать не медленнее, а возможно и быстрее чем если бы она была на писана на чистом С, благодаря тому что компиляция производится с учётом аппаратных особенностей именно того компьютера на котором программа выполняется. И по-моему ты сам это подтвердил:
Цитировать
Простейший пример: BubbleSort на С будет медленнее, чем QuickSort на C#, при достаточно большом количестве элементов. Хотя делают вроде одно и то же
Шокирован вообще-то моё высказывание в переводе на человеческий звучит примерно как "Если, у того кто пишет на С, руки из жопы, то выполнятся программа будет как ни крути медленее написанной нормальным человеком на любом другом языке" Улыбка

PS Теста ради сейчас наваяю какую-нить жуткую чушь ( типа пустого цикла на 100000 итераций Улыбка ) на C и C# и посмотрим сколько оно будет выполнятся Улыбка

Лучше рекурсивное (не итерационное!) вычисление чисел Фибоначчи:
Пример на скала:
object fib extends Application
 {
  def fib(_n: int): int =
   if (_n==0) {0;}
   else if (_n==1) {1;}
   else {fib(_n-1)+fib(_n-2)};
 
  override def main(_args: Array[String]): unit =
   {
    var mid : long = 0L;
    for (val j <- 1 to 5)
     {
      Console.println("Iteration: "+j);
      val startTm : long = System.currentTimeMillis();
      Console.println(fib(46));
      val endTm : long = System.currentTimeMillis();
      Console.println("Total time [ms]:"+(endTm - startTm));
      mid = mid + (endTm - startTm);
     }
    Console.println("Mid time [ms]:"+(mid/5.0));
   };
 };


Результат:
Iteration: 1
1836311903
Total time [ms]:24300
Iteration: 2
1836311903
Total time [ms]:24211
Iteration: 3
1836311903
Total time [ms]:24377
Iteration: 4
1836311903
Total time [ms]:24179
Iteration: 5
1836311903
Total time [ms]:24208
Mid time [ms]:24255.0

Машинка: Athlon X2 4600, 2Gb, Fedora 8, JDK 1.6u4.

P. S. Хотя вообще не стоит слишком сильно полагаться на эти тесты - в рельных прогах все равно узким местом будет I/O, сеть и БД, и от скорости числодробление мало что зависит.
Записан
Страниц: 1 2 [3] 4 5 6   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM