Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему генератор паролей на python генерирует 10к паролей быстрее чем генератор паролей на с#?

филипп сапожникав Профи (563), закрыт 3 года назад
Код на python :
import random

lenpassword=int(input("Сколько поролей ?: "))

password=[]
bo="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"
for col in range(lenpassword):
password.append(''.join([random.choice(bo) for x in range(10)]))

print(password)
input()

На с#:
namespace PASSGENER
{
using System;
using System.Collections.Generic;

public class Program
{
static void Genpass(int len)
{

string para = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
int kol = 10;
List res = new List(len) { };
Random rnd = new Random();
int lng = para.Length;
char[] temp = new char[kol];
for (int i = 0; i<len; i++)
{
for (int a = 0; a<kol; a++) { temp[a] = para[rnd.Next(lng)]; }
res.Add(new string (temp));
}
for (int i = 0; i<res.Count; i++) {Console.WriteLine(res[i]); }

}

public static void Main()
{
Genpass(Convert.ToInt32(Console.ReadLine()));
}
}
}
Если, что я новичок, много чего не понимаю. Глупости не писать!!!
Лучший ответ
Алексей Занн Искусственный Интеллект (152006) 4 года назад
замути генератор на ассемблере, удивишся
филипп сапожникавПрофи (563) 4 года назад
Я вроде писал. Глупости не писать. Мне не нужны ассемблеры.
Остальные ответы
AlanTheKnight Знаток (348) 4 года назад
Не знаю, вообще длительность зависит от кода, плюс пайтон интерпретируется, а не компилируется. Также ты используешь random, тоже побыстрее будет. Ну и типы данных разные.
Голова Робота Просветленный (36328) 4 года назад
У тебя Питон выводит данные в одну строку: одна операция вывода. C# выводит много строк. Вывод каждой строки вызывается отдельно.
филипп сапожникавПрофи (563) 4 года назад
Скорость от вывода без выделения строк не меняется. Уже думал об этом.
Голова Робота Просветленный (36328) Для таких вопросов есть инструмент - profiler. Он показывает, как какая функция сколько выполнялась. Может генератор случайных чисел в Питоне более шустрый. Может Питон быстрее выполняет такие выражения ''.join([random.choice(bo) for x in range(10)]) чем C# в цикле заполняет массив.
Next Мудрец (19672) 4 года назад
Попробуй засечь время (в самом начале получить текущее время, и потом после каждой операции (блока) )
Похожие вопросы