GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.6 (15)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Как получить значения множественных(точками) аргументов функции в Си?
гость
178.176.213.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 13 ноя 21 7:51
Бля, отпуск наконец то настал, но я забухал, и решил забить на всё хер, с хуя ли я буду программировать?
Но, вообще, интересно, ебать, можно сделать, или нет. Кирпичики-то тоже разные бывают, бывает забутовочный, бывает облицовочный, клинкерный итп.. Интересно проверить, насколько говно atof&? насколько хорошо его сделали..
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 212
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 4:26
Цитата:
Автор: гость
суперкрутой мачо-недевственник решил утереть всем ботаникам сопли, и показать что такое настоящий профи? Опозориться не боитесь?


Цитата:
Автор: гость
парсер можете не пилить, просто сделайте быстрее atofa на плюсах, а я проверю




Ну в общем посидел я вчера вечером над этими тасками, результаты такие:

1) atof удалось обогнать в 8 раз.
2) парсер быстрее питоновского(с пандовским масивом) в 3 раза

Я не считаю конечно это максимально возможным результатом, если на ассемблере переписать atof может ещё раза в полтора два удастся ускориться. Можно и парсер на ассемблере переписать тоже, но я пас.

Кто побьёт мой результат с меня пивас.
[Ответ][Цитата]
гость
178.176.213.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 7:45
Цитата:
Автор: Сергей Гаврилов
Ну в общем посидел я вчера вечером над этими тасками, результаты такие:
1) atof удалось обогнать в 8 раз.

Да ты шо! А мне удалось в 1000 раз обогнать, стало быть ботаник-девственник здесь ТЫ. Код сюда, и то и другой, а я (и все желающие) проверят.

На самом деле, верю, но сам я не проверял, просто принципиально забил.
[Ответ][Цитата]
Симпатичный
Сообщений: 343
На: Как получить значения множественных(точками) аргументов функции в Си?
+1
Добавлено: 14 ноя 21 8:06
Цитата:
Автор: гость
ботаник-девственник
Если ому интересно, то я тоже до сих пор - девственник(мне 29), ну и само собой ботаник, компьютерщик.

Пол года назад у меня также диагностировали шизофрению, простая форма(без глюков и бреда), просто деградирую социально и эмоционально постепенно, теряю связь с реальностью, ухожу в себя.
[Ответ][Цитата]
гость
178.176.213.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 10:02
Цитата:
Автор: Симпатичный

Если ому интересно, то я тоже до сих пор - девственник(мне 29), ну и само собой ботаник, компьютерщик.

Пол года назад у меня также диагностировали шизофрению, простая форма(без глюков и бреда), просто деградирую социально и эмоционально постепенно, теряю связь с реальностью, ухожу в себя.


было вроде 51, здесь молодежи нет, одни старые пердуны, кроме меня, я карлсон, в самом так сказать расцвете.. Лгать это хорошо, но не очень. Если будешь лгать - окунешся ебальничком в парашу.
[Ответ][Цитата]
Симпатичный
Сообщений: 343
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 10:29
Цитата:
Автор: гость
было вроде 51
Вы меня с кем то перепутали, я возраст не называл. Пока молодой, да, через год уже всё. А вообще я бы хотел что бы мне было 51, а лучше сразу 70, честно говоря жизнь меня не сильно баловала, нет чувства ценности жизни только инстинкт самосохранения. Если бы в какой то неожиданный момент кто то бы мне в голову выстрелил, или врыв сильный порвал меня на куски, так что бы я не понял даже что исчез, я был бы не против, даже заказал такое, если бы были деньги,с другой стороны если бы они были то наверно я бы и не хотел умирать.
[Ответ][Цитата]
гость
107.189.30.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 10:49
Цитата:
Автор: Сергей Гаврилов

1) atof удалось обогнать в 8 раз.
2) парсер быстрее питоновского(с пандовским масивом) в 3 раза
Докажите. Код в студию.
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 212
На: Как получить значения множественных(точками) аргументов функции в Си?
+2
Добавлено: 14 ноя 21 13:38
Изменено: 14 ноя 21 13:40
Цитата:
Автор: гость
Код сюда, и то и другой, а я (и все желающие) проверят.

Цитата:
Автор: гость
Докажите. Код в студию.




csvparcer2.hpp

#pragma once

using namespace std;

struct dbltab
{
double** data;
int rows, cols;
};


class Csv2
{

static double atofse(char* s, char* e)
{
long double res = 0;
int sign = 1, powflag = 0;
unsigned long long pow = 1;
if (*s == '-') { sign = -1; s++; }

while (s != e)
{
if (*s >= '0' && *s <= '9')
{
res = res * 10 + (*s - '0');
if (powflag) pow *= 10;
}
else if (*s == '.') powflag = 1;
++s;
}
return sign * (res / pow);
}

public:

static dbltab parse(const char* path, char tok1 = ',', char tok2 = '\n')
{
FILE* F;
fopen_s(&F, path, "r");
fseek(F, 0, SEEK_END);
int flen = ftell(F);
fseek(F, 0, SEEK_SET);
char* text = new char[flen];
fread(&text[0], 1, flen, F);
fclose(F);

int lines = 0;
for (int i = 0; i < flen; ++i)
if (text[i] == tok2)
++lines;

char* fl = 0;
for (int i = 0; i < flen; ++i)
{
if (text[i] == tok2)
{
fl = text + i;
break;
}
};
int rows = 1;
for (char* b = text; *b != *fl; ++b)
if (*b == tok1)
++rows;

double** data = new double* [lines];

data[0] = new double[rows];

char* c = text;
char* p = text;
int i = 0, j = 0;
while (1)
{
if (*c == tok1 || *c == tok2 || *c == 0)
{
data[i][j++] = atofse(p, c);
p = c + 1;
}
if (*c == tok2)
{
data[++i] = new double[rows];
j = 0;
++c;
}
if (*c == 0) break;
++c;
}


return { data,rows,lines };
}

};



main.cpp




#include <iostream>
#include <sstream>

#include "csvparcer2.hpp"
#include <math.h>

using namespace std;

static double atof2(char* s)
{
long double res = 0;
int sign = 1, powflag = 0;
unsigned long long pow = 1;
if (*s == '-') { sign = -1; s++; }

while (*s != 0)
{
if (*s >= '0' && *s <= '9')
{
res = res * 10 + (*s - '0');
if (powflag) pow *= 10;
}
else if (*s == '.') powflag = 1;
++s;
}
return sign * (res / pow);
}


char** manydig(int n)
{
char** digs = new char* [n];
for (int i = 0; i < n; ++i)
{
digs[i] = new char[20];
double v = (2 * (double)rand() / RAND_MAX - 1) * 10;
sprintf_s(digs[i],20, "%f", v);
}

return digs;
}


int main()
{
int n = 10000000;
char** digs = manydig(n);
double* fl = new double[n];
clock_t t = clock();
for (int i = 0; i < n; ++i)
{
fl[i] = atof(digs[i]);
//if(i<10) printf("%f\n", fl[i]);
}
double atof_t = clock() - t;
printf("time atof: %f\n", atof_t);

t = clock();
for (int i = 0; i < n; ++i)
{
fl[i] = atof2(digs[i]);
//if(i<10) printf("%f\n", fl[i]);
}
double atof2_t = clock() - t;
printf("time atof2: %f\n", atof2_t);

printf("atof/atof2: %f\n", atof_t/ atof2_t);

t = clock();
dbltab ds = Csv2::parse("M:/inputs.csv");
printf("parse inputs.csv: %d\n", clock() - t);

getchar();
}


[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 212
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 14 ноя 21 13:42
компилировать c /Ox
[Ответ][Цитата]
гость
185.31.175.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 15 ноя 21 7:00
Цитата:
Автор: гость
Кирпичики-то тоже разные бывают, бывает забутовочный, бывает облицовочный, клинкерный итп.. Интересно проверить, насколько говно atof&? насколько хорошо его сделали..
Профессиональный код это не обязательно быстрый или функциональный, первичны совсем другие требования. Код в первую очередь должен быть СТАНДАРТНЫМ, потому что профессиональный код в 10 раз больше читают чем пишут, намного важнее чтобы его можно было понять профессионалу с первого взгляда, а для этого он должен использовать СТАНДАРТНЫЕ функции, приёмы, шаблоны, вообще всё стандартное должно быть по возможности.

Никто вас не поймёт если вы перепишите atof или malloc, это идиотизм, нельзя этого делать, даже думать об этом странно, Гаврилов покрыл себя позором и команду где он работает или когда либо работал, хотя профессионалы готайку не читают(только дома ночью втихаря), но постепенно слухи распространятся и это конец карьере Гаврилова, такое не прощают, добро пожаловать фриланс-ру.
[Ответ][Цитата]
Андрей Кучеменко
Сообщений: 74
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 16 ноя 21 2:55
Запустил код Гаврилова, код с виду делает то что задумано, результаты схожие.

Цитата:

time atof: 907
time atof2: 106
atof/atof2: 8.5
parse inputs.csv: 4205


То есть парсинг гиговой таблички(своей) 4 сек. Странно однако выходит, стандартный atof оказался в 8.5 раз менее производительный такого, достаточно наивного кода.

машинка - i9-9900KF
[Ответ][Цитата]
Андрей Кучеменко
Сообщений: 74
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 16 ноя 21 3:00
Цитата:
Автор: гость

Профессиональный код это не обязательно быстрый или функциональный, первичны совсем другие требования.
А не потому ли хотя железо всё шустрее и шустрее, но софт всё медленней?

Может пора код уже писать а не играться в "софт-скилы"
[Ответ][Цитата]
гость
199.249.230.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 16 ноя 21 4:33
Смотрю тема парсера цсв подымается не впервые за несколько лет, словно бляцкая схема крымского бандеровца Александра со стрелочками, чо он там ваял не помню, но акцент на это был.

Вот какого хера спрашивается? Почему не сортировка, почему не какой то алгоритм класифкации\кластеризации? Это же форум типа про ИИ. Какой нахуй парсер, кому оно надо??? Это позор.
[Ответ][Цитата]
гость
185.3.33.*
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 17 ноя 21 3:20
Цитата:
Автор: гость

Смотрю тема парсера цсв подымается не впервые за несколько лет, словно бляцкая схема крымского бандеровца Александра со стрелочками, чо он там ваял не помню, но акцент на это был.

Вот какого хера спрашивается? Почему не сортировка, почему не какой то алгоритм класифкации\кластеризации? Это же форум типа про ИИ. Какой нахуй парсер, кому оно надо??? Это позор.


дак берите и программируйте все эти алгоритмы кластеризации/классификации, выкладывайте их сюда, а все присутствующие будут закидывать вас говном..

Парсер тут запрогали именно потому, что он нахер никому не нужен..
[Ответ][Цитата]
Андрей Кучеменко
Сообщений: 74
На: Как получить значения множественных(точками) аргументов функции в Си?
Добавлено: 17 ноя 21 4:10
Парсер кодить занятие подозрителльное, даже можно сказать что позорное, но то что какой то случайный мужичек легко atof в 8 раз обскакал, кодом в 10 строчек, это забавно.


static double atof2(char* s)
{
long double res = 0;
int sign = 1, powflag = 0;
unsigned long long pow = 1;
if (*s == '-') { sign = -1; s++; }

while (*s != 0)
{
if (*s >= '0' && *s <= '9')
{
res = res * 10 + (*s - '0');
if (powflag) pow *= 10;
}
else if (*s == '.') powflag = 1;
++s;
}
return sign * (res / pow);
}


И посмотрите на код atof Гаврилова, сделано в лоб, поделка на коленке, он дабл использует внутри вычисления, с интом наверно будет ещё в разы быстрее.

Но всё это заставляет задуматься об оптимальности стандартных библиотек, в ситуациях когдда скорость критична.
[Ответ][Цитата]
 Стр.6 (15): 1  2  3  4  5  [6]  7  8  9  10  ...  15<< < Пред. | След. > >>