Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 ..... 53 | 54 | 55 | 56 | 57

 

  Вопрос: Линк на закачку Safety Anti-Virus v1.0 beta! Добавлено: 22.05.09 20:20  

Автор вопроса:  MegaÐefender | Web-сайт: safetyAV.narod.ru

  Ответы Всего ответов: 852  

Номер ответа: 151
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #151 Добавлено: 25.05.09 00:24
В дотнете рандом другой

  1. private int InternalSample()
  2. {
  3.     int inext = this.inext;
  4.     int inextp = this.inextp;
  5.     if (++inext >= 0x38)
  6.     {
  7.         inext = 1;
  8.     }
  9.     if (++inextp >= 0x38)
  10.     {
  11.         inextp = 1;
  12.     }
  13.     int num = this.SeedArray[inext] - this.SeedArray[inextp];
  14.     if (num < 0)
  15.     {
  16.         num += 0x7fffffff;
  17.     }
  18.     this.SeedArray[inext] = num;
  19.     this.inext = inext;
  20.     this.inextp = inextp;
  21.     return num;
  22. }
Номер ответа: 152
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #152 Добавлено: 25.05.09 00:29
Под C# результат аналогичный причем без разницы checked/unchecked
Номер ответа: 153
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #153
Добавлено: 25.05.09 00:37
неплохо. явно JIT компайлер в действии.
Номер ответа: 154
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #154
Добавлено: 25.05.09 00:49
хотя... чтото я сглючил.
time = 1078.57ms = 1.07857
против
1.7931025

на 0.7с дольше от 1.1с. почти на 2/3 медленнее.
Номер ответа: 155
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #155 Добавлено: 25.05.09 00:51
Попробовал прикрутить генератор который ты дал.

  1.         static void Main(string[] args)
  2.         {
  3.             int steps, arraySize;
  4.             Console.Write("Введите кол-во шагов: ");
  5.             steps = Int32.Parse(Console.ReadLine());
  6.             Console.Write("Введите кол-во элементов: ");
  7.             arraySize = Int32.Parse(Console.ReadLine());
  8.  
  9.             Random random = new Random();
  10.             int[] data = new int[arraySize];
  11.             DateTime start = DateTime.Now;
  12.  
  13.             for (int n = 0; n < steps; n++)
  14.                 for (int i = 0; i < arraySize; i++)
  15.                     data = SimpleRandom();
  16.             Console.WriteLine(DateTime.Now.Subtract(start));
  17.             Console.ReadLine();
  18.  
  19.         }
  20.  
  21.         static int holdrand = System.Environment.TickCount;
  22.         static int SimpleRandom ()
  23.         {
  24.             return (((holdrand = holdrand * 214013 + 2531011) >> 16) & 0x7fff);
  25.         }


Результат
  1. Введите кол-во шагов: 150
  2. Введите кол-во элементов: 1000000
  3. 00:00:00.5610321
Номер ответа: 156
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #156 Добавлено: 25.05.09 00:52
Эм.... Глюкнуло форматирование.

  1.         static void Main(string[] args)
  2.         {
  3.             int steps, arraySize;
  4.             Console.Write("Введите кол-во шагов: ");
  5.             steps = Int32.Parse(Console.ReadLine());
  6.             Console.Write("Введите кол-во элементов: ");
  7.             arraySize = Int32.Parse(Console.ReadLine());
  8.  
  9.             Random random = new Random();
  10.             int[] data = new int[arraySize];
  11.             DateTime start = DateTime.Now;
  12.  
  13.             for (int n = 0; n < steps; n++)
  14.                 for (int i = 0; i < arraySize; i++)
  15.                     data[  i  ] = SimpleRandom();
  16.             Console.WriteLine(DateTime.Now.Subtract(start));
  17.             Console.ReadLine();
  18.  
  19.         }
  20.  
  21.         static int holdrand = System.Environment.TickCount;
  22.         static int SimpleRandom ()
  23.         {
  24.             return (((holdrand = holdrand * 214013 + 2531011) >> 16) & 0x7fff);
  25.         }


Ra$cal пишет:
хотя... чтото я сглючил.
time = 1078.57ms = 1.07857
против
1.7931025

на 0.7с дольше от 1.1с. почти на 2/3 медленнее.

Медленнее потому что генератор другой :)
Номер ответа: 157
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #157
Добавлено: 25.05.09 01:01
любопытно =) лан потом када время будет потестю проивзодительности. слишком большой прирост у тебя. такое бывает когда умный компилятор выкидывает по его мнению ненужный функционал. он точно у тебя генерит рандомы? =) я не знаю поддерживает он такую запись как в с++. замени метод рандома таким кодом

  1. static int SimpleRandom ()
  2. {
  3.     holdrand = holdrand * 214013 + 2531011;
  4.     return (holdrand  >> 16) & 0x7fff;
  5. }
Номер ответа: 158
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #158 Добавлено: 25.05.09 01:20
Генерит рандомы, проверил.

Второй вариант генерит такие же числа как и первый, но рабоатет медленнее (0.574 против 0.642)

В IL одной строчкой отличаются

Первый вариант

  1. .method private hidebysig static int32 SimpleRandom() cil managed
  2. {
  3.     .maxstack 8
  4.     L_0000: ldsfld int32 ConsoleApplication5.Program::holdrand
  5.     L_0005: ldc.i4 0x343fd
  6.     L_000a: mul
  7.     L_000b: ldc.i4 0x269ec3
  8.     L_0010: add
  9.     L_0011: dup
  10.     L_0012: stsfld int32 ConsoleApplication5.Program::holdrand
  11.     L_0017: ldc.i4.s 0x10
  12.     L_0019: shr
  13.     L_001a: ldc.i4 0x7fff
  14.     L_001f: and
  15.     L_0020: ret
  16. }


Второй

  1. .method private hidebysig static int32 SimpleRandom2() cil managed
  2. {
  3.     .maxstack 8
  4.     L_0000: ldsfld int32 ConsoleApplication5.Program::holdrand
  5.     L_0005: ldc.i4 0x343fd
  6.     L_000a: mul
  7.     L_000b: ldc.i4 0x269ec3
  8.     L_0010: add
  9.     L_0011: stsfld int32 ConsoleApplication5.Program::holdrand
  10.     L_0016: ldsfld int32 ConsoleApplication5.Program::holdrand
  11.     L_001b: ldc.i4.s 0x10
  12.     L_001d: shr
  13.     L_001e: ldc.i4 0x7fff
  14.     L_0023: and
  15.     L_0024: ret
  16. }
Номер ответа: 159
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #159
Добавлено: 25.05.09 01:22
Не сделали ни на VB6, ни на VB .NET, ни на коболе

Давай задачу (хотя там уже все было сделано)
Номер ответа: 160
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #160 Добавлено: 25.05.09 01:33
Ничего там не было сделано.

Внимательнее перечитай топик, там есть 2 куска кода, я просил привести их аналоги с использованием On Error Resume Next и прочих архаизмов, унаследованых от VB6
Номер ответа: 161
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #161 Добавлено: 25.05.09 01:34
дотнет сделал C++ в 2 раза... куда котится мир???? =-O
Номер ответа: 162
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #162
Добавлено: 25.05.09 01:35
Внимательнее перечитай топик, там есть 2 куска кода, я просил привести их аналоги с использованием On Error Resume Next и прочих архаизмов, унаследованых от VB6


Не сделали ни на VB6, ни на VB .NET, ни на коболе

В плане поиска и обработки ошибок повторюсь, в параллельном топике двое спецов обработки ошибок VB6 испарились после того как я попросил сделать мне 2 куска кода.

На VB6 все сделано
Номер ответа: 163
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #163
Добавлено: 25.05.09 01:35
Внимательнее перечитай топик, там есть 2 куска кода, я просил привести их аналоги с использованием On Error Resume Next и прочих архаизмов, унаследованых от VB6


Не сделали ни на VB6, ни на VB .NET, ни на коболе

В плане поиска и обработки ошибок повторюсь, в параллельном топике двое спецов обработки ошибок VB6 испарились после того как я попросил сделать мне 2 куска кода.

На VB6 все сделано
Номер ответа: 164
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #164
Добавлено: 25.05.09 01:35
Внимательнее перечитай топик, там есть 2 куска кода, я просил привести их аналоги с использованием On Error Resume Next и прочих архаизмов, унаследованых от VB6


Не сделали ни на VB6, ни на VB .NET, ни на коболе

В плане поиска и обработки ошибок повторюсь, в параллельном топике двое спецов обработки ошибок VB6 испарились после того как я попросил сделать мне 2 куска кода.

На VB6 все сделано
Номер ответа: 165
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #165
Добавлено: 25.05.09 01:37
  1. enter n - 150
  2. enter arrsize - 1000000
  3. time = 549.545ms
  4. Для продолжения нажмите любую клавишу . . .

заинлайнил rand() =)

  1.  
  2. int holdrand = 0;
  3. inline int _rand(){
  4. return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
  5. }
  6.  
  7. и в цикле
  8.  
  9. for(int i = 0; i < arrsize; i++)
  10.     arr = _rand();

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 ..... 53 | 54 | 55 | 56 | 57

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам