Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 22 фев 2018, 13:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
Непрочитанное сообщениеДобавлено: 30 мар 2015, 19:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Olej писал(а):
Ещё могу показать пару сравнений ... широко известные алгоритмы:

1. "Ханойская башня"


2. Решето Эратосфена для отбора простых чисел: // http://ru.wikipedia.org/wiki/%D0%E5%F8% ... 4%E5%ED%E0

на C:
Код:
#include <stdio.h>
#include <stdlib.h>

// решето Эратосфена
// http://ru.wikipedia.org/wiki/%D0%E5%F8%E5%F2%EE_%DD%F0%E0%F2%EE%F1%F4%E5%ED%E0

typedef long long data_t;

void eratos( char *arr, ulong size ) {
   ulong i, j;
   for( i = 2; i < size; i++ )              // цикл по всему массиву от первого простого числа "2"
      if( 1 == arr[ i ] )
         for( j = i + i; j < size; j += i ) // вычеркивание всех чисел кратных i
           arr[ j ] = 0;
}

int main( int argc, char **argv ) {
   long n;
   char debug = 0;
   if( argc != 2 )
      printf( "usage: %s [-]<number>\n", argv[ 0 ] ), exit( 1 );
   n = atol( argv[ 1 ] );                   // максимальное число
   if( n < 0 ) n = -n, debug = 1;
   ulong k, j;
   char *a = calloc( n + 1, sizeof( char ) );
   a[ 0 ] = a[ 1 ] = 0;                     // вычёркиваем "0" и "1"
   for( k = 2; k < n; k++ ) a[ k ] = 1;     // остальные размечаем как простые
   eratos( a, n );
   for( k = 0, j = 0; k < n; k++ )
      j += ( a[ k ] != 0 ? 1 : 0 );
   printf( "простых чисел %lu\n", j );
   if( debug ) {
#define INLINE 10
      for( k = 0, j = 0; k < n; k++ )
         if( 1 == a[ k ] ) {
            j++;
            printf( "%lu%s", k, ( 0 == j % INLINE ? "\n" : "\t" ) );
         }
      if( j % INLINE != 0 ) printf( "\n" );
   }
   free( a );
   return 0;
}


на Go:
Код:
package main
import( "os"; "strconv" )

func main() {
   type data_t int64
   var срез []bool;
   debug := false
   eratos := func () {
      count:= func () data_t {
         var j data_t
         for i := range срез { if  срез[ i ] { j++ } }
        return j
      }
      for i := range срез {
         if срез[ i ] {
            for j := i + i; j < len( срез ); j += i {
               срез[ j ] = false;  // вычеркивание всех чисел кратных i
            }
         }
      }
      print( "простых чисел ", count(), "\n" );     
   }
   show := func ( s []bool ) {     // диагностика среза
      const inlin = 10
      var j data_t
      for i := range s {
         if s[ i ] {
            j++
            print( i, "\t" )
            if 0 == ( j % inlin ) { print( "\n" ) }
         }
      }
      if( j % inlin != 0 ) { print( "\n" ) }
   }
   if len( os.Args ) != 2 {
      print( "usage: ", os.Args[ 0 ], " [-]<number>\n" )
      return
   }
   n, _ := strconv.Atoi( os.Args[ 1 ] )
   var длина data_t = data_t( n );
   if длина < 0 { длина, debug = -длина, true }
   срез = make( []bool, длина )
   for i := range срез { if i > 1 { срез[ i ] = true } }
   eratos()
   if debug { show( срез ) }
}


Код:
[Olej@modules erastof]$ time ./erastof_c 50000000
простых чисел 3001134

real    0m1.927s
user    0m1.897s
sys     0m0.018s

[Olej@modules erastof]$ time ./erastof_cl 50000000
простых чисел 3001134

real    0m1.966s
user    0m1.924s
sys     0m0.022s

[Olej@modules erastof]$ time ./erastof_gol 50000000
простых чисел 3001134

real    0m1.611s
user    0m1.585s
sys     0m0.025s

[Olej@modules erastof]$ time ./erastof_go 50000000
простых чисел 3001134

real    0m2.227s
user    0m2.185s
sys     0m0.023s


Это вообще практически одни и те же цифры.


Вложения:
erastof.tgz [2.19 КБ]
Скачиваний: 322
Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 03 май 2016, 12:48 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 18 окт 2011, 20:26
Сообщения: 73
Swift — язык программирования от Apple.
В 2015г. Apple анонсировала Swift как открытый язык программирования (с открытым исходным кодом) и теперь Swift доступен на Linux.
http://www.apple.com/ru/swift/
Бинарные версии представлены для Ubuntu 14.04 и Ubuntu 15.10:
https://swift.org/download/#releases
(там же описана и установка)
[fibo.swift]
Код:
func fib(n: Int) -> (Int) {
    if n < 2 {
        return 1
    } else {
        return fib(n - 1) + fib(n - 2)
    }
}

if Process.arguments.count < 2 { 
    print("Ups!")
}
else { 
    let arg = Process.arguments[1]
    var argstr: Int? = Int(arg)
    if argstr != nil {
       let argint: Int! = Int(arg)
       print(fib(argint))
    }
    else {
       print("Ups!")
    }
}


Код:
$ swift --version
Swift version 2.2 (swift-2.2-RELEASE)
Target: x86_64-unknown-linux-gnu


Код:
$ swiftc fibo.swift -o fibo_sw


Код:
$ time nice -9 ./fibo_sw 30

1346269

real  0m0.066s
user  0m0.054s
sys   0m0.012s

$ time nice -9 ./fibo_sw 30

1346269

real  0m0.055s
user  0m0.043s
sys   0m0.012s

$ time nice -9 ./fibo_sw 30

1346269

real  0m0.067s
user  0m0.054s
sys   0m0.012s


Исходник и сам скомпилированный (64-bit) файл вложен


Вложения:
fiboSwift.tar [17 КБ]
Скачиваний: 124
Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 03 май 2016, 13:05 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Lepton писал(а):
Исходник и сам скомпилированный (64-bit) файл вложен

Хорошо бы для сравнения дать рядом выполнение того же fibo на Swift и на C, классическом GCC с хорошим уровнем оптимизации (-O3).


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 03 май 2016, 13:12 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Lepton писал(а):
Swift — язык программирования от Apple.
В 2015г. Apple анонсировала Swift как открытый язык программирования (с открытым исходным кодом) и теперь Swift доступен на Linux.
http://www.apple.com/ru/swift/
Бинарные версии представлены для Ubuntu 14.04 и Ubuntu 15.10:
https://swift.org/download/#releases
(там же описана и установка)

Интересно...

Вы бы от себя про Swift добавили новой темкой в Инструменты программирования?
... там у нас целый зверинец по языкам программирования! :lol:
(могут быть достаточно интересные дополнения и источники информации по Swift)


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 03 май 2016, 15:39 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 18 окт 2011, 20:26
Сообщения: 73
Olej писал(а):
Lepton писал(а):
Исходник и сам скомпилированный (64-bit) файл вложен

Хорошо бы для сравнения дать рядом выполнение того же fibo на Swift и на C, классическом GCC с хорошим уровнем оптимизации (-O3).


Код:
$ time nice -9 ./fibo_c 30
1346269

real  0m0.023s
user  0m0.016s
sys   0m0.006s


Тогда
Код:
$ swiftc -O fibo.swift -o fibo_sw
$ time nice -9 ./fibo_sw 30
1346269

real  0m0.052s
user  0m0.040s
sys   0m0.011s


Или еще лучше :lol:
Код:
$ swiftc -Ounchecked fibo.swift -o fibo_sw
$ time nice -9 ./fibo_sw 30
1346269

real  0m0.037s
user  0m0.027s
sys   0m0.011s


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 13 дек 2016, 13:01 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Виктория писал(а):
Алгоритмы сортировки, может быть? Пузырьковая сортировка и метод Гаусса часто используются в обработке числовых данных, всем известны и вроде не являются уж совсем простыми.

По поводу алгоритмов сортировки ... чтобы не изобретать всё от нуля...
Вот здесь: Heapsort
Цитата:
Heapsort is one of the best general-purpose sort algorithms, a comparison sort and part of the selection sort family. Although somewhat slower in practice on most machines than a good implementation of quicksort, it has the advantages of worst-case O(n log n) runtime and being an in-place algorithm. Heapsort is not a stable sort.

Это описание сортировки кучей. С приложением реализации на нескольких :-o языках (C, C++, Lisp, D, Erlang, Java ... 2 реализации ;-) , Ocaml, Pascal, Python .. 2 реализации, Rexx, Ruby, Seed7).
Но там же показаны такие же реализации для 10 методов сортировки.
Цитата:
Related content:
- Bogosort
- Bubble sort
- Heapsort
- Introsort
- Insertion sort
- Merge sort
- Quicksort
- Selection sort
- Shell sort
- Sort an array


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 24 дек 2016, 13:21 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Lepton писал(а):
Разновидность языка Basic с платным компилятором (Linux, Windows, MacOS X, AmigaOS)


Попалось на глаза ... известнейшее открытое письмо классика IT Э.В.Дейкстра в комитет IEEE, в котором он предлагал подвергать уголовной ответственности тех, кто обучает программированию на языке BASIC:
Цитата:
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации.

Это написано больше 30 лет назад!


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 29 дек 2016, 16:04 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 18 окт 2011, 20:26
Сообщения: 73
Olej писал(а):
Lepton писал(а):
Разновидность языка Basic с платным компилятором (Linux, Windows, MacOS X, AmigaOS)


Попалось на глаза ... известнейшее открытое письмо классика IT Э.В.Дейкстра в комитет IEEE, в котором он предлагал подвергать уголовной ответственности тех, кто обучает программированию на языке BASIC:
Цитата:
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации.

Это написано больше 30 лет назад!


Причем тут Purebasic?, где от старого BASIC уже ничего не осталось, или это намек для флуда из цикла "Священных войн"? ;-)
Кстати, у Дейкстра есть и другой афоризм:
Цитата:
Средства не виноваты в том, что их безграмотно используют.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 29 дек 2016, 17:22 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Lepton писал(а):
Причем тут Purebasic?, где от старого BASIC уже ничего не осталось, или это намек для флуда из цикла "Священных войн"? ;-)

Я уже не помню, что там в Purebasic осталось от старого BASIC.
И никаких священных войн ... просто попалась цитата, которую я потерял, и её нужно где-то сохранить. ;-)

Но это к вопросу, что привычки, усвоенные в плохом инструменте программирования потом ... "не вырубишь и топором".
То же, что и к BASIC, вполне можно, с таким же успехом (или почти) применить и к COBOL, FORTRAN и др.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Непрочитанное сообщениеДобавлено: 02 июн 2017, 12:12 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10530
Откуда: Харьков
Производительность I/O бэкэнда: Node vs. PHP vs. Java vs. Go
Цитата:
23 мая в 15:49
Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.969s | 21 Queries | GZIP : On ]