По поводу хранения даты и времени

Ventura_forever

Новичок
По поводу хранения даты и времени

В общем я задумаля - как лучше хранить дату/время - в виде текста или unix timestamp? И вот что я надумал...

Сначала некоторые тесты:

1. Для того, что-бы хранить в timestamp мы его генерируем. Заодно оцениваем время "генерации" человеческой даты:
PHP:
for ($i=0; $i<1000000; $i++){
  $t=time();
  $d=date('Y-m-d H:i:s', $t);
}
и получаем около 5.575 секунд...

2. Если мы храним в стандартном виде ГГГГ-ММ-ДД ЧЧ:ММ:СС, то мы его генерируем. А чтобы человеку отдать в "нашем" формате делаем так:
PHP:
for ($i=0; $i<1000000; $i++){
  $d=date('Y-m-d H:i:s');
  $t=strtotime($d);
  $d2=date('j.m.Y G:i:s', $t);
}
И получаем 12.56 секунд.

Разница очевидна. Тоесть из timestamp'a легко "сгенерировать" дату любого образца, легко определить разницу дат и т.д.

А в случае текста всех тормозит ф-ция strtotime().

Вот хотел поделится и спросить - у кого какие мысли по этому поводу - кто чем пользуется?
И вдогонку - как теперь удобно генерировать дату в соответсвии часовых поясов?

Всем спасибо.
 

Cid

...двинутый новичок
А часто приходится за раз один миллион записей вставлять? =)
 

Ventura_forever

Новичок
А часто приходится за раз один миллион записей вставлять? =)
Вообще-то не по теме. Это для лучшей демонстрации. При единичном вызове практически нет разницы, вернее её не видно.
 

Фанат

oncle terrible
Команда форума
А нафига тогда эти тупые тесты?
Если нет разницы?
Для лучшей демонстрации ЧЕГО? Того, что одна функция на микросекунду дольше другой отработает? И тебя это ТАК волнует?

Не по теме, родной, это ты выступил.
Сдается мне, что у тебя с головой не в порядке.
Сам понимаешь, что разница смехотворная, но посвящаешь ей в форуме для продвинутых целое сообщение, смысла в котором ноль целых, хрен десятых.
Сам же понимаешь, что фигню написал, но на человека, который тебе на это указал - огрызаешься.

Очень надеюсь, что ты проспишься и устыдишься.
 

lucas

Guest
Серьезные придирки к тестам:

1. Отчасти, "тестируется" скорость присвоения переменных в PHP -- неужели нельзя было написать без лишних приваиваний?

2. Если стоит задача оценить время генерации удобочитаемого представления даты из таймстампа, то не нужно пихать туда же и генерацию таймстампа -- оно константно, а, следовательно, лишь искажает результаты.

3. Судя по наличию в коде цикла, замеры времени проводились средствами PHP, что не есть правильное решение. Замерять время нужно утилитой ab (Apache Benchmark).

4. Вышеизложенное позволяет считать тесты проведенными некорректно, что уничижает их приведенные результаты.

Далее:

5. Почему тредстартер решил, что эта тема подходит под форум "...для продвинутых"? Это такой способ себе польстить?

6. Первое, что должно было прозвучать в посте тредстартера, это указание на то, где будут храниться эти даты, ибо тогда все очевидно -- если в БД, то в формате, предоставляемом БД для значений даты (и времени), в противном случае в таймстампе.

7. Как справедливо заметил Cid, не приходится рассуждать о скорости и времени выполнения в данном вопросе, так как все это будет попытками сэкономить на спичках. Вопрос должен стоять об удобстве последующей обработки значений дат.

Выводы:

8. Тесты проведены в корне неверно и зря.

9. Тема исчерпана пунктом 6 этого поста.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: По поводу хранения даты и времени

Автор оригинала: Ventura_forever
В общем я задумаля - как лучше хранить дату/время - в виде текста или unix timestamp?
Как задолбали недоу(ч|м)ки.

Сохрани-ка мне дату "6 мая 1234 года" в виде Unix timestamp.

По-моему аргументация "от бенчмарков" должна уже сразу настораживать...
 

Cid

...двинутый новичок
Сохрани-ка мне дату "6 мая 1234 года" в виде Unix timestamp.
Справедливо, но, смею заметить, что речь совсем не шла о выборе способа хранении даты в каком-то конкретном случае (например, при хранении исторических данных).
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Cid
речь совсем не шла о выборе способа хранении даты в каком-то конкретном случае
Именно. Речь шла о хранении даты "вообще". Я привёл пример. И?
 
Сверху