- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
static string[] nums = new string[60] {
"00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
"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", "59"
};
/// <summary>
/// Форматирует дату в dd.MM.yyyy
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static string ShortRuDateStr(ref DateTime date)
{
return string.Concat(nums[date.Day], ".", nums[date.Month], ".", YearToString(date.Year));
}
/// <summary>
/// Возвращает текущую дату в формате yyyyMMddHHmmss
/// </summary>
/// <returns></returns>
public static string Timestamp(ref DateTime date)
{
return string.Concat(YearToString(date.Year), nums[date.Month], nums[date.Day], nums[date.Hour], nums[date.Minute], nums[date.Second]);
}
public static string YearToString(int year)
{
return year.ToString().PadLeft(4, '0');
}
AnalPerOral 13.07.2017 22:11 # −5
zorro 14.07.2017 11:07 # −1
Mirsait 14.07.2017 16:31 # −1
{
return String.Format("{0:D4}{1:D2}{2:D2}{3:D2}{ 4:D2}{5:D2}", date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second);
}
public static string ShortRuDateStr(ref DateTime date)
{
return String.Format("{0:D2}.{1:D2}.{2:D4}", date.Day, date.Month, date.Year);
}
DistortNeo 31.07.2017 02:13 # 0
static string nums = "0001020304 .... 5859";
... nums[date.Day * 2], nums[date.Day * 2 + 1]
planaric 19.08.2017 12:37 # −1
date.ToString("dd.MM.yyyy");
date.ToString("yyyyMMddHHmmss");
date.ToString("yyyy");
kirpichiki 14.11.2017 13:34 # +1
Для 1kk итераций:
"говнокод" - 324 ms
date.ToString("yyyyMMddHHmmss") - 597 ms
return String.Format("{0:D4}{1:D2}{2:D2}{3:D2}{ 4:D2}{5:D2}", date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second); - 1623 ms (Вот где говнокод-то сокрыт)
roman-kashitsyn 14.11.2017 13:55 # +1
В джава есть SimpleDateFormat, который компилирует и валидирует шаблон ровно один раз. Тут, правда, Java тоже выделилась: SimpleDateFormat умудрились сделать не потокобезопасным. Ну не мудаки ли?
SemaReal 14.11.2017 18:30 # −1
Компилированный паттерн хотелось сделать static final, ну я и сделал. А потом случился сурприз.
Я согласен что сисярп тут не прав (точнее не сишарп, а .NET потому что структура DateTime и ее .ToString (String) это часть .NET), но можно я не поверю что кто-то реально страдает из за такого вот продолба производительности?
SemaReal 14.11.2017 18:26 # +2
Какие у Вас интересные ботлл-неки в проекте. Не думали переписать форматирование даты на си с использованием SSE4 ?
kirpichiki 15.11.2017 14:43 # 0
CHayT 15.11.2017 14:50 # +3
SemaReal 15.11.2017 17:44 # 0
А уж трассировать нужно с помощью EWT. Оно дико быстрое и конечно бинарное.
bormand 15.11.2017 19:09 # 0
> дико быстрое...
...и дико неудобное в плане просмотра и разбора полётов.
SemaReal 15.11.2017 23:11 # 0
roman-kashitsyn 16.11.2017 00:53 # +2
Интересно, я единственный прочитал это как "Как старый поклонник WCT"?
SemaReal 16.11.2017 03:21 # 0
Для примера напишем простейшую программу с бесконечным инкрементом регистра AX (сначала в машинных кодах):
EAPLONEAPLOKEAPLOHEAPLOE
1024-- 16.11.2017 18:56 # 0
inkanus-gray 16.11.2017 19:05 # 0
EUSKADI EZ DA ISPAINIA!
Или что-нибудь на албанском или на каком-нибудь другом малоизвестном языке.
inkanus-gray 16.11.2017 19:10 # +2
απλά = просто
απώλεια = потеря
SemaReal 15.11.2017 17:45 # 0
.
Если хочется трассировать текстовыми строками то надо идти писать на пхп