powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Символ #0 в строках PHP
12 сообщений из 37, страница 2 из 2
Символ #0 в строках PHP
    #38537710
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрInterSkyЭта хитрость внедрена по просьбе АНБ :)То есть рассказать никто не сможет? И через сколько предполагается рассекретить?
Кто сказал что "рассказать никто не сможет"? Обвинить в нарушении тайны можно только в случае выполнения двух условий: есть нормативные документы в которых это объявляется тайной, и второе: лицо должно быть осведомлено о том что это является тайной. Ты где-то подписывал документы что тебя проинформировали о том что это тайна?

А через сколько обычно рассекречивают закладки спецслужб в программах?
Вон в Telegram недавно объявили о том что сервер посылает спецкод который позволяет генерировать ключи так что содержимое может читать третья сторона. А разработчики объявили это фичей которая помогает генерации лучшего рандомайза.
Так что никто объявлять не будет. Если найдут - объявят фичей (и главно что найдётся тысяча сторонников которые будут говорить что это крутая фича, как например тут в РНР), а если не найдут, то никто и не узнает...
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38537729
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторНо учитывая особенность ПХП, где переменная хранится сразу во всех возможных типах (насколько я помню),
нет. ровно в одном типе

А... вот... нашёл. В источнике, где я это читал было неверно изложено... переменная хранится и правда только в одном типе (просто я Си не знаю, и потому поверил тому, что было написано, а оказывается там хитрость в union).

Но тогда возвращаясь обратно к вопросу производительности... Разве перевод двух строк в числа не займёт больше времени, чем проход по строкам регуляркой (или посимвольно, не знаю что быстрее) и потом посимвольное сравнение двух строк?

Как по мне, то по производительности варианты отличаться не должны (как минимум).

Хотя разработчики могли просто не заморачиваться... так как это скорее не востребовано и просто уберегает от случайной ошибки (при написании == вместо ===). Сложную арифметику со строками организовывать не логично (с массивами и удобнее и более правильно).

Потому в принципе при внимательном написании кода, разницы в подходах нету.
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38537818
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрХотя разработчики могли просто не заморачиваться...
Так вопрос в том замеч надо строки перводить в числа при сравнении?
Если человек захочет сравнить строки '6' и '6.00' и чтобы показало что это одинаковые строки - он переведёт значения во Float.
Если каждая строка при сравнении вначале пытается перевестись в число и потом лишь при ошибке сравнивается как строка - это же на сколько производительность падает?
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38537829
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПрограмёрХотя разработчики могли просто не заморачиваться...
Так вопрос в том замеч надо строки перводить в числа при сравнении?
Если человек захочет сравнить строки '6' и '6.00' и чтобы показало что это одинаковые строки - он переведёт значения во Float.
Если каждая строка при сравнении вначале пытается перевестись в число и потом лишь при ошибке сравнивается как строка - это же на сколько производительность падает?

Так вот что больше всего бесит, так это неработающий лимит... То есть там установлено условие на переполнение, но при таком переполнении сравнение всёровно продолжается не со строками, а с числами... Потому и происходит то, что происходит :)

Насчёт производительности, разработчики ПХП не сильно то заморачивались на этом моменте ))) Если нужна производительность, стоит использовать что либо другое (например питон или С#/C++)
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38537997
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрЕсли нужна производительность, стоит использовать что либо другое (например питон или С#/C++)Питон быстрее? Может подскажешь какую-нибудь небольшую статью о том что есть в Питоне чего нет РНР?
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538176
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПрограмёрЕсли нужна производительность, стоит использовать что либо другое (например питон или С#/C++)Питон быстрее? Может подскажешь какую-нибудь небольшую статью о том что есть в Питоне чего нет РНР?

Насчёт статьи подсказать не могу... Да и вопрос "что есть в питоне чего нет в PHP" я не совсем понимаю :) Это 2 разных языка, которые так сравнивать нельзя... У них разное всё, начиная с синтаксиса, заканчивая предназначением (у меня лично несколько прог на компе стоит написанных на питоне. php же заточен под вэб, а потому десктопное приложение написать на нём думаю будет на порядок сложнее).

А насчёт примерчика доказывающего мои слова - без проблем :)
итак, у меня на компе (не судите строго... не сильный ноут, потому при перепроверке у вас цифры могут быть в разы меньше) было запущено 2 скрипта. Первый на питоне, второй на php. Питон версии 2.7.6 запускается через wsgi модуль апача (не думаю что лучший вариант, но мне так, чисто побаловаться).

Идею кода брал с тестового задания на собеседовании (в принципе ситуация жизненная). Задача - построение дерева из результата запроса к базе. Результат приходит в виде [["nodeId", "parentNodeId"], ["nodeId", "parentNodeId"], ...]

Код на PHP с построением дерева за 2 прохода:
Код: php
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.
<?php
  
function treeFromBase($queryResult){
  $tempTree = array();
  foreach($queryResult as $treeElement){
    $tempTree[$treeElement[0]] = array(
      'parent'=>$treeElement[1], 
      'children'=>array()
    );
  }
  
  $resTree = array();
  foreach($tempTree as $elementName=>&$treeElement){
    if($treeElement['parent']==NULL){
      $resTree[$elementName]=&$treeElement;
    }else{
      $tempTree[$treeElement['parent']]['children'][$elementName]=&$treeElement;
    }
  }
  return $resTree;
};

$start = time();

for($i=0; $i<800000; $i++){
$res = treeFromBase(array(
    array('parent_id1',NULL),
    array('parent_id2',NULL),
    array('id1',       'parent_id1'),
    array('id2',       'parent_id2'),
    array('subId2',    'id2'),
    array('subId2.1',  'id2'),
    array('subId1',    'id1'),
    array('subId1.1',  'id1'),
));
}
echo time()-$start;
  
  echo "<pre>";
  var_dump($res);
  echo "</pre>";
  
?>



приблизительно тот же код на питоне, выполняющий ту же задачу по тому же принципу:
Код: python
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.
from time import clock

def treeFromBase(arr):
  tempTree = {}
  for node in arr:
    tempTree[node[0]]={"parent": node[1], "children": {}}
    
  resTree = {}
  for nodeName in tempTree:
    if tempTree[nodeName]["parent"]==None:
      resTree[nodeName]=tempTree[nodeName]
    else:
      tempTree[tempTree[nodeName]["parent"]]["children"][nodeName]=tempTree[nodeName]
  
  return resTree

def application(environ, start_response):
  start = clock();
  for i in range(800000):
    res = treeFromBase([
      ['parent_id1',None],
      ['parent_id2',None],
      ['id1', 'parent_id1'],
      ['id2', 'parent_id2'],
      ['subId2', 'id2'],
      ['subId2.1', 'id2'],
      ['subId1', 'id1'],
      ['subId1.1', 'id1']
    ])

  status = '200 OK'
  output = (str)(clock()-start)+repr(res)
  response_headers = [('Content-type', 'text/plain'),
                      ('Content-Length', str(len(output)))]
  start_response(status, response_headers)
   
  return [output]



в результате, первый скрипт выводит правильную структуру, а также время выполнения цикла, которое составляет 25-26 секунд
второй скрипт выводит ту же правильную структуру (немного в другом формате), и время выполнения цикла в данном случае составляет 13.8-13.9 секунд.

Как видим, код на python отрабатывается вдвое быстрее
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538253
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрв результате, первый скрипт выводит правильную структуру, а также время выполнения цикла, которое составляет 25-26 секунд
второй скрипт выводит ту же правильную структуру (немного в другом формате), и время выполнения цикла в данном случае составляет 13.8-13.9 секунд.

Как видим, код на python отрабатывается вдвое быстрееУвеличение производительсности в 2 раза - мне кажется это рази чего стоит переходить на другой язык и полностью переписывать проект. Проще процессор купить новый. Вот из-за функционала - наверно стоило бы осваивать что-то новое. РНР огромным количеством функций заточен под web. Если питон - это компилятор, то разумеется он будет быстрей. Если он универсальный язык для всего и в тоже время ни под что-то конкретное, тогда я и на "Delphi for PHP" напишу программу которая думаю будет ещё быстрей.
Просто про питон всегда слышу только в контесте веб-разработок, по этому и хотел узнать - есть ли в нём что-то что для меня значительно расширит горизонты возможностей при написании сайтов...
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538270
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После Delphi легче переходить в asp.net или java.
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538276
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky,

Асинхронность для highload проектов? :)
Ну я не знаю что ещё... в принципе данный язык знаю так... посредственно... Он мне по работе не пригодился (как-то так сложилось, что вошёл в вэб на PHP, и вот до сих пор на нём же и сижу, так как для разработчиков на питоне требования чуть больше, чем "знаю синтаксис, могу научиться...")

А вообще, что может так конкретно отличаться (теоретически) между двумя языками при написании сайта? Как по мне только быстродействие и удобство :) Удобство стоит оценивать для каждого человека и каждого проекта отдельно, по поводу быстродействия - данные уже привёл.

так что, в принципе изучить что-то новое, если есть время - никогда не зря. Мне вот например питон больше нравится, в нём код получается короче и более понятно... + он не даёт ломать отступы при вложенности (так как именно ними она и определяется)... + есть генераторы, + есть конструкции вида:
Код: python
1.
myVar = [x**2 for x in range(2, 100)];


получим список квадратов всех чисел от 2 до 100... или ещё интереснее
Код: python
1.
myVar = [x**2 for x in range(2, 100) if simple(x) else x**3];


тогда, если функция simple возвращает true для простых чисел и false в ином случае, то получим список с квадратами всех простых чисел и кубами всех остальных от 2 до 100. (о сферическом в вакууме :) )

Вроде как мелочи, а при написании кода экономит уйму места, символов и времени... И код в итоге получается понятнее (так как на выходе не целый блок, а всего одна строка).

Кстати, в PHP5.6 (по-моему в нём) решили тоже генераторы добавить :)
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538476
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. Надо попробывать. А изучал по какой-то книжке или что посоветуешь?
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538538
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyИнтересно. Надо попробывать. А изучал по какой-то книжке или что посоветуешь?

Начинал учить то я его по книге... Если не ошибаюсь, по картинке вроде эта . Но книги по программированию от корочки до корочки я читать не умею (там всё как-то медленно и много слов). В инэте всё короче и учится быстрее, потому по статьям бегаю, на том же http://habrahabr.ru/ например. Стараюсь ставить себе реальные задачи (например получил по работе задание... выполнил на php, а потом пытаюсь этот функционал на python'е сообразить), и по ходу возникновения проблем общаюсь с google.ru :)

P.S. Многие такой способ не одобряют, и первым делом задают вопрос "а какие книги по языку ты прочитал?", но вот у меня такой способ изучения как-то прижился. :)
...
Рейтинг: 0 / 0
Символ #0 в строках PHP
    #38538584
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в идеале был бы "беглый видео урок".
Чтобы в кратце, что да как, вот так делаются массивы, вот так циклы, а вот мы вывели массив циклом, загрузили файл от клиента и запихнули его в базу данных. А дальше уже нужен будет только список функций и всё :)
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Символ #0 в строках PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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