powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
7 сообщений из 7, страница 1 из 1
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504645
berminga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж. Код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 function  generateId($len)
{
    $letters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    $str = "";
     for  ( $i =  0 ; $i < $len; $i = $i+ 1  )
        $str = $str.$letters[  rand ()% 62  ];

     return  $str;
}
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504651
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
навскидку - использовать какой-нибудь StringBuffer или StringBuilder для этого вашего пхп, чтоб с каждой итерацией не создавался новый объект-строка.

а что возвращает rand()? если целое число, то можно добавить ещё пару символов и вместо деления юзать поразрядное "И" (rand() & 63)
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504653
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mt_rand нужно использовать
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504656
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmt_rand нужно использоватьЕще дольше будет.
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504671
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
berminga,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
[an0nym@localhost ~]$ cat test.php 
<?php
 switch  ($argv[ 1 ])
{
   case  'berminga':
     function  generateId($len)
    {
      $letters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
      
      $str = "";
       for  ( $i =  0 ; $i < $len; $i = $i+ 1  )
        $str = $str.$letters[  rand ()% 62  ];

       return  $str;
    }
     break ;
   case  'an0nym':
     function  generateId($length)
    {
      $alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      $alphabet_length =  62 ;
       return   substr ( str_shuffle ( str_repeat ($alphabet,  ceil ($length / $alphabet_length))),  0 , $length);
    }
     break ;
}

 const  LENGTH_MAX =  1024 ;
 const  TRIES =  1000000 ;

 for  ($length =  1 ; $length <= LENGTH_MAX; $length *=  2 ) {
  $start =  microtime ( true );
   for  ($i =  0 ; $i < TRIES; ++$i)
    generateId($length);
  $end =  microtime ( true );

   echo  $length, "\t", $end - $start, "\n";
}
[an0nym@localhost ~]$ php test.php berminga
 1 	 1 . 2689220905304 
 2 	 1 . 8100938796997 
 4 	 2 . 7736878395081 
 8 	 4 . 8485329151154 
 16 	 8 . 8386499881744 
 32 	 16 . 961936950684 
 64 	 33 . 190233945847 
^C
[an0nym@localhost ~]$ php test.php an0nym
 1 	 3 . 6046829223633 
 2 	 3 . 5677490234375 
 4 	 3 . 624372959137 
 8 	 3 . 6216700077057 
 16 	 3 . 5305140018463 
 32 	 3 . 6543760299683 
 64 	 4 . 8884370326996 
 128 	 6 . 240996837616 
 256 	 9 . 3746719360352 
 512 	 14 . 413372039795 
 1024 	 24 . 756990909576 
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504674
berminga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вах. Завтра пойму, что это такое. Спасибо.
...
Рейтинг: 0 / 0
Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
    #37504678
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для больших строк более эффективен будет fallback на fread /dev/urandom, но если под указанный алфавит кое-что еще можно придумать быстрое (base64 + str_replace), то под другой алфавит будет сложнее и не факт, что быстрее реализации через str_repeat и str_shuffle.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Генератор ID-строки на PHP. Код. Можно оптимизировать по скорости?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]