Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Μπορει να μου πει καποιος γιατι αυτο εδω το regex (L".*?\t(.*?)\t(.*?)\t(.*?)\t.*?\t(.*?)\r") κανει 8 δευτερολεπτα για να ματσαρει 300+ ματς ; mad.png

 

Θελω αυτο εδω

 

 

>1	FTSE	FTSE	294.32	3	-0.53
1	FTSEA	FTSEA	681.81	3	-0.49
1	FTSEB	FTSEB	239.52	3	-0.82
1	FTSEI	FTSEI	789.33	3	-0.52
1	FTSEL	FTSEL	710.34	3	-0.4
1	FTSEM	FTSEM	809.21	3	-0.4
1	FTSES	FTSES	180.29	2	0.33
1	GD	ΓΔ	754.96	3	-0.6
1	DAP	ΔΑΠ	1533.19	3	-3.06
1	DAS	ΔΑΣ	1278.98	3	-1.4
1	DBP	ΔΒΠ	2663.48	3	-0.04
1	DEA	ΔΕΑ	3427.96	1	0
1	DEM	ΔΕΜ	1194.16	2	1.19
1	DKY	ΔΚΥ	1599.51	3	-1.68
1	DKV	ΔΚΩ	1654.77	2	0.11
1	DME	ΔΜΕ	0	3	-100
1	DMK	ΔΜΚ	2132.59	2	0.17
1	DPA	ΔΠΑ	2205	3	-1.76
1	DPO	ΔΠΟ	2021.49	2	0.96
1	DPY	ΔΠΥ	1607.54	3	-0.81
1	DTA	ΔΤΑ	1206.94	2	0.93
1	DTL	ΔΤΛ	916.61	3	-0.6
1	DTP	ΔΤΠ	4830.66	3	-1.17
1	DTR	ΔΤΡ	320.05	3	-0.43
1	DTX	ΔΤΧ	318.6	2	0.37
1	DYG	ΔΥΓ	152.36	3	-2.74
1	DXM	ΔΧΜ	5262.51	2	0.33
1	DXY	ΔΧΥ	1125.51	2	0.02
1	EADAK20	ΕΑΔΑΚ20	2.96	3	-0.62
1	EDAKGD	ΕΔΑΚΓΔ	7.72	3	-0.66
1	EDAKET30	ΕΔΑΚΕΤ30	5.79	3	-0.24
1	NEA_D_K	ΝΕΑ_Δ_Κ	1023.34	1	0
1	SAGD	ΣΑΓΔ	1046.18	3	-0.6
1	AAAK	ΑΑΑΚ	0	3	-100
1	AAAP	ΑΑΑΠ	0	3	-100
1	ABAJ	ΑΒΑΞ	0.744	2	2.62
1	ABE	ΑΒΕ	0.24	2	9.09
1	ABENIR	ΑΒΕΝΙΡ	0.135	2	1.5
1	AGKRI	ΑΓΚΡΙ	0	3	-100
1	ADAK20	ΑΔΑΚ20	0	3	-100
1	AEGEK	ΑΕΓΕΚ	0	3	-100
1	AUHNA	ΑΘΗΝΑ	0	3	-100
1	AIOLK	ΑΙΟΛΚ	0	3	-100
1	AKRIT	ΑΚΡΙΤ	0	3	-100
1	ALAPIS	ΑΛΑΠΙΣ	0	3	-100
1	ALKAT	ΑΛΚΑΤ	0	3	-100
1	ALKO	ΑΛΚΟ	0	3	-100
1	ALMY	ΑΛΜΥ	0	3	-100
1	ALSIN	ΑΛΣΙΝ	0	3	-100
1	ALTEK	ΑΛΤΕΚ	0	3	-100
1	ALTER	ΑΛΤΕΡ	0	3	-100
1	ALTI	ΑΛΤΙ	0	3	-100
1	ALFA	ΑΛΦΑ	1.05	3	-1.87
1	ANDRO	ΑΝΔΡΟ	0	3	-100
1	ANEK	ΑΝΕΚ	0.1	2	2.04
1	ANEP	ΑΝΕΠ	0	3	-100
1	ANEPO	ΑΝΕΠΟ	0	3	-100
1	ARAIG	ΑΡΑΙΓ	1.52	3	-2.56
1	ARBA	ΑΡΒΑ	3.81	1	0
1	ASASK	ΑΣΑΣΚ	0	3	-100
1	ASKO	ΑΣΚΟ	0	3	-100
1	ASTAK	ΑΣΤΑΚ	0	3	-100
1	ASTHR	ΑΣΤΗΡ	0	3	-100
1	ATE	ΑΤΕ	0.275	2	5.77
1	ATEK	ΑΤΕΚ	0	3	-100
1	ATERM	ΑΤΕΡΜ	0	3	-100
1	ATLA	ΑΤΛΑ	0	3	-100
1	ATRAST	ΑΤΡΑΣΤ	0	3	-100
1	ATT	ΑΤΤ	0.246	2	3.8
1	ATTIK	ΑΤΤΙΚ	0	3	-100
1	ATTIKA	ΑΤΤΙΚΑ	0	3	-100
1	AXON	ΑΧΟΝ	0.18	1	0
1	BALK	ΒΑΛΚ	0	3	-100
1	BARG	ΒΑΡΓ	0	3	-100
1	BARNH	ΒΑΡΝΗ	0	3	-100
1	BETAN	ΒΕΤΑΝ	0	3	-100
1	BINTA	ΒΙΝΤΑ	0	3	-100
1	BIOKA	ΒΙΟΚΑ	0	3	-100
1	BIOSK	ΒΙΟΣΚ	0	3	-100
1	BIOT	ΒΙΟΤ	0	3	-100
1	BIOXK	ΒΙΟΧΚ	3.04	3	-1.62
1	BIS	ΒΙΣ	0	3	-100
1	BOSYS	ΒΟΣΥΣ	0	3	-100
1	BOX	ΒΟΧ	0	3	-100
1	BYTE	ΒΥΤΕ	0.258	1	0
1	BVBOS	ΒΩΒΟΣ	0.504	2	3.07
1	GALAJ	ΓΑΛΑΞ	0	3	-100
1	GEBKA	ΓΕΒΚΑ	0	3	-100
1	GED	ΓΕΔ	0	3	-100
1	GEKTERNA	ΓΕΚΤΕΡΝΑ	0.905	3	-1.2
1	GK	ΓΚ	0	3	-100
1	GTE	ΓΤΕ	0	3	-100
1	DAIOS	ΔΑΙΟΣ	0	3	-100
1	DAKGD	ΔΑΚΓΔ	0	3	-100
1	DAKET30	ΔΑΚΕΤ30	0	3	-100
1	DEE12	ΔΕΕ12	0	3	-100
1	DEH	ΔΕΗ	5.72	2	0.53
1	DIEKA	ΔΙΕΚΑ	0	3	-100
1	DION	ΔΙΟΝ	1.39	3	-0.71
1	DIXU	ΔΙΧΘ	0	3	-100
1	DOL	ΔΟΛ	0	3	-100
1	DOMIK	ΔΟΜΙΚ	0.63	2	1.61
1	DOYRO	ΔΟΥΡΟ	0	3	-100
1	DROME	ΔΡΟΜΕ	0	3	-100
1	DROYK	ΔΡΟΥΚ	0	3	-100
1	EBZ	ΕΒΖ	0	3	-100
1	EBROF	ΕΒΡΟΦ	0	3	-100
1	EDRA	ΕΔΡΑ	0	3	-100
1	EDRIP	ΕΔΡΙΠ	0	3	-100
1	EEEK	ΕΕΕΚ	13.04	3	-1.21
1	EKTER	ΕΚΤΕΡ	0	3	-100
1	ELAIN	ΕΛΑΙΝ	0	3	-100
1	ELBA	ΕΛΒΑ	0	3	-100
1	ELBE	ΕΛΒΕ	0	3	-100
1	ELBIO	ΕΛΒΙΟ	0	3	-100
1	ELGEK	ΕΛΓΕΚ	0	3	-100
1	ELIN	ΕΛΙΝ	0	3	-100
1	ELIXU	ΕΛΙΧΘ	0	3	-100
1	ELKA	ΕΛΚΑ	0	3	-100
1	ELL	ΕΛΛ	14.49	2	3.28
1	ELLAKTVR	ΕΛΛΑΚΤΩΡ	1.34	1	0
1	ELMPI	ΕΛΜΠΙ	0	3	-100
1	ELPE	ΕΛΠΕ	6.3	3	-1.72
1	ELSTR	ΕΛΣΤΡ	0	3	-100
1	ELTK	ΕΛΤΚ	0	3	-100
1	ELTON	ΕΛΤΟΝ	0.61	2	1.5
1	ELYF	ΕΛΥΦ	0	3	-100
1	ELFK	ΕΛΦΚ	0	3	-100
1	EMDKO	ΕΜΔΚΟ	0	3	-100
1	EMDPO	ΕΜΔΠΟ	0	3	-100
1	EMP	ΕΜΠ	0	3	-100
1	ENBI	ΕΝΒΙ	0	3	-100
1	ENKLV	ΕΝΚΛΩ	0	3	-100
1	ENTER	ΕΝΤΕΡ	0	3	-100
1	EPILK	ΕΠΙΛΚ	0	3	-100
1	EPSIL	ΕΠΣΙΛ	0	3	-100
1	ESYMB	ΕΣΥΜΒ	0	3	-100
1	ETE	ΕΤΕ	1.8	1	0
1	ETEM	ΕΤΕΜ	0	3	-100
1	EYAPS	ΕΥΑΠΣ	2.88	3	-4
1	EYBRK	ΕΥΒΡΚ	0	3	-100
1	EYDAP	ΕΥΔΑΠ	2.92	1	0
1	EYPIK	ΕΥΠΙΚ	0.424	3	-1.4
1	EYPRO	ΕΥΠΡΟ	4.03	3	-6.28
1	EYROM	ΕΥΡΟΜ	0.44	3	-5.78
1	EYRVB	ΕΥΡΩΒ	0.717	3	-2.45
1	EYRVS	ΕΥΡΩΣ	0	3	-100
1	EFTZI	ΕΦΤΖΙ	0	3	-100
1	EX	ΕΧ	0	3	-100
1	EXAE	ΕΧΑΕ	3.33	1	0
1	EXTE	ΕΧΤΕ	0	3	-100
1	ZAMPA	ΖΑΜΠΑ	0	3	-100
1	HLEAU	ΗΛΕΑΘ	0	3	-100
1	HOL	ΗΟΛ	0	3	-100
1	HRAK	ΗΡΑΚ	0	3	-100
1	IASV	ΙΑΣΩ	0	3	-100
1	IATR	ΙΑΤΡ	0	3	-100
1	IKONA	ΙΚΟΝΑ	0	3	-100
1	IKTIN	ΙΚΤΙΝ	0.85	2	1.07
1	ILYDA	ΙΛΥΔΑ	0	3	-100
1	IMPE	ΙΜΠΕ	0	3	-100
1	INKAT	ΙΝΚΑΤ	0	3	-100
1	INLE	ΙΝΛΕ	0	3	-100
1	INLOT	ΙΝΛΟΤ	0.929	1	0
1	INTEK	ΙΝΤΕΚ	0.57	2	23.91
1	INTER	ΙΝΤΕΡ	0	3	-100
1	INTET	ΙΝΤΕΤ	0	3	-100
1	INTKA	ΙΝΤΚΑ	0	3	-100
1	INFIS	ΙΝΦΙΣ	0	3	-100
1	IONA	ΙΟΝΑ	0	3	-100
1	IPPK	ΙΠΠΚ	0	3	-100
1	ITTL	ΙΤΤΛ	0	3	-100
1	KAUH	ΚΑΘΗ	0	3	-100
1	KAMP	ΚΑΜΠ	0.75	3	-5.06
1	KANAK	ΚΑΝΑΚ	1.34	1	0
1	KARD	ΚΑΡΔ	0	3	-100
1	KAREL	ΚΑΡΕΛ	0	3	-100
1	KARTZ	ΚΑΡΤΖ	0	3	-100
1	KEKR	ΚΕΚΡ	1.16	2	3.57
1	KEPEN	ΚΕΠΕΝ	0	3	-100
1	KERAL	ΚΕΡΑΛ	0	3	-100
1	KLEM	ΚΛΕΜ	0	3	-100
1	KLM	ΚΛΜ	0	3	-100
1	KLVNK	ΚΛΩΝΚ	0	3	-100
1	KLVNP	ΚΛΩΝΠ	0	3	-100
1	KMOL	ΚΜΟΛ	0	3	-100
1	KOMP	ΚΟΜΠ	0	3	-100
1	KORDE	ΚΟΡΔΕ	0	3	-100
1	KORRES	ΚΟΡΡΕΣ	0	3	-100
1	KOYAL	ΚΟΥΑΛ	0	3	-100
1	KOYES	ΚΟΥΕΣ	0.9	2	4.05
1	KOYM	ΚΟΥΜ	0	3	-100
1	KREKA	ΚΡΕΚΑ	0	3	-100
1	KRETA	ΚΡΕΤΑ	0	3	-100
1	KRHTVN	ΚΡΗΤΩΝ	0	3	-100
1	KRI	ΚΡΙ	0	3	-100
1	KTHLA	ΚΤΗΛΑ	0	3	-100
1	KYPR	ΚΥΠΡ	0.888	3	-1
1	KYRIO	ΚΥΡΙΟ	0	3	-100
1	KYRM	ΚΥΡΜ	0	3	-100
1	KVAM	ΚΩΑΜ	0	3	-100
1	LABI	ΛΑΒΙ	0.241	3	-2.43
1	LAMDA	ΛΑΜΔΑ	0	3	-100
1	LAMCA	ΛΑΜΨΑ	0	3	-100
1	LANAK	ΛΑΝΑΚ	0	3	-100
1	LANET	ΛΑΝΕΤ	0	3	-100
1	LEBK	ΛΕΒΚ	0	3	-100
1	LEBP	ΛΕΒΠ	0	3	-100
1	LIBAN	ΛΙΒΑΝ	0	3	-100
1	LIMNH	ΛΙΜΝΗ	0	3	-100
1	LOGOS	ΛΟΓΟΣ	0	3	-100
1	LOYLH	ΛΟΥΛΗ	0	3	-100
1	LYK	ΛΥΚ	0	3	-100
1	MAUIO	ΜΑΘΙΟ	0	3	-100
1	MAIK	ΜΑΙΚ	0	3	-100
1	MAJIM	ΜΑΞΙΜ	0	3	-100
1	MARAK	ΜΑΡΑΚ	0	3	-100
1	MARFB	ΜΑΡΦΒ	0.237	3	-1.66
1	MASOP	ΜΑΣΟΠ	0	3	-100
1	MEBA	ΜΕΒΑ	0	3	-100
1	MENTI	ΜΕΝΤΙ	0	3	-100
1	MERKO	ΜΕΡΚΟ	0	3	-100
1	MESOX	ΜΕΣΟΧ	0	3	-100
1	METK	ΜΕΤΚ	6.33	2	2.26
1	MHXK	ΜΗΧΚ	0	3	-100
1	MHXP	ΜΗΧΠ	0	3	-100
1	MIG	ΜΙΓ	0.409	1	0
1	MIGRE	ΜΙΓΡΕ	0	3	-100
1	MIN	ΜΙΝ	0	3	-100
1	MINOA	ΜΙΝΟΑ	0	3	-100
1	MLANT	ΜΛΑΝΤ	0	3	-100
1	MLS	ΜΛΣ	2.06	1	0
1	MOH	ΜΟΗ	5.8	3	-1.69
1	MONTA	ΜΟΝΤΑ	0	3	-100
1	MOTO	ΜΟΤΟ	0	3	-100
1	MOYZK	ΜΟΥΖΚ	0	3	-100
1	MOXL	ΜΟΧΛ	0.919	2	14.88
1	MPELA	ΜΠΕΛΑ	3.72	2	0.54
1	MPOKA	ΜΠΟΚΑ	0	3	-100
1	MPOPA	ΜΠΟΠΑ	0	3	-100
1	MPTK	ΜΠΤΚ	0	3	-100
1	MYTIL	ΜΥΤΙΛ	3.11	1	0
1	NAKAS	ΝΑΚΑΣ	0	3	-100
1	NAYP	ΝΑΥΠ	0	3	-100
1	NAYT	ΝΑΥΤ	0.225	3	-1.75
1	NEL	ΝΕΛ	0	3	-100
1	NEVRS	ΝΕΩΡΣ	0	3	-100
1	NHR	ΝΗΡ	0	3	-100
1	NIKAS	ΝΙΚΑΣ	0	3	-100
1	NIOYS	ΝΙΟΥΣ	0	3	-100
1	NTOKXO	ΝΤΟΚΧΟ	0	3	-100
1	NTOPLER	ΝΤΟΠΛΕΡ	0	3	-100
1	NTRIART	ΝΤΡΙΑΡΤ	0	3	-100
1	JYLK	ΞΥΛΚ	0	3	-100
1	JYLP	ΞΥΛΠ	0	3	-100
1	OLU	ΟΛΘ	10	3	-0.7
1	OLKAT	ΟΛΚΑΤ	0	3	-100
1	OLP	ΟΛΠ	11.46	2	3.24
1	OLYMP	ΟΛΥΜΠ	1.39	2	2.21
1	OPAP	ΟΠΑΠ	7.12	2	0.99
1	OPTRON	ΟΠΤΡΟΝ	0	3	-100
1	ORAORA	ΟΡΑΟΡΑ	0	3	-100
1	ORKA	ΟΡΚΑ	0	3	-100
1	OTE	ΟΤΕ	3.33	3	-0.6
1	OTOEL	ΟΤΟΕΛ	0	3	-100
1	PAIR	ΠΑΙΡ	0	3	-100
1	PAP	ΠΑΠ	0	3	-100
1	PARN	ΠΑΡΝ	0.32	2	2.56
1	PASAL	ΠΑΣΑΛ	0.27	2	28.57
1	PEIR	ΠΕΙΡ	0.239	2	1.27
1	PERS	ΠΕΡΣ	0	3	-100
1	PERF	ΠΕΡΦ	0	3	-100
1	PETZK	ΠΕΤΖΚ	0	3	-100
1	PETRO	ΠΕΤΡΟ	0	3	-100
1	PHGAS	ΠΗΓΑΣ	0	3	-100
1	PKSG	ΠΚΣΓ	0	3	-100
1	PLAU	ΠΛΑΘ	0	3	-100
1	PLAIS	ΠΛΑΙΣ	0	3	-100
1	PLAKR	ΠΛΑΚΡ	0	3	-100
1	PPAK	ΠΠΑΚ	0.121	2	0.83
1	PRAJK	ΠΡΑΞΚ	0	3	-100
1	PRAJP	ΠΡΑΞΠ	0	3	-100
1	PRD	ΠΡΔ	0.15	2	5.63
1	PREZT	ΠΡΕΖΤ	0	3	-100
1	PRO	ΠΡΟ	0	3	-100
1	PROF	ΠΡΟΦ	0.235	3	-4.08
1	PSYST	ΠΣΥΣΤ	0	3	-100
1	REB	ΡΕΒ	0	3	-100
1	RHONE	ΡΗΟΝΕ	0	3	-100
1	RILKE	ΡΙΛΚΕ	3.41	1	0
1	RINTE	ΡΙΝΤΕ	0	3	-100
1	SAIKL	ΣΑΙΚΛ	0	3	-100
1	SANYO	ΣΑΝΥΟ	0	3	-100
1	SAOS	ΣΑΟΣ	0	3	-100
1	SAR	ΣΑΡ	0	3	-100
1	SARAN	ΣΑΡΑΝ	0	3	-100
1	SATOK	ΣΑΤΟΚ	0	3	-100
1	SELMK	ΣΕΛΜΚ	0	3	-100
1	SELO	ΣΕΛΟ	0.473	1	0
1	SENTR	ΣΕΝΤΡ	0	3	-100
1	SIDE	ΣΙΔΕ	1.67	3	-4.02
1	SIDMA	ΣΙΔΜΑ	0	3	-100
1	SIENS	ΣΙΕΝΣ	0.17	2	0.59
1	SPEIS	ΣΠΕΙΣ	0	3	-100
1	SPI	ΣΠΙ	0	3	-100
1	SPINT	ΣΠΙΝΤ	0	3	-100
1	SPRI	ΣΠΡΙ	0	3	-100
1	SPYR	ΣΠΥΡ	0	3	-100
1	SFA	ΣΦΑ	0	3	-100
1	SVLK	ΣΩΛΚ	0.783	3	-2.37
1	TBANK	ΤΒΑΝΚ	0.02	3	-4.76
1	TEGO	ΤΕΓΟ	0	3	-100
1	TEKDO	ΤΕΚΔΟ	0	3	-100
1	TENERG	ΤΕΝΕΡΓ	1.76	3	-1.68
1	TEJT	ΤΕΞΤ	0	3	-100
1	TZKA	ΤΖΚΑ	0	3	-100
1	THLET	ΤΗΛΕΤ	0	3	-100
1	TITK	ΤΙΤΚ	13.77	3	-1.78
1	TITP	ΤΙΤΠ	0	3	-100
1	TRASTOR	ΤΡΑΣΤΟΡ	0	3	-100
1	TSOYK	ΤΣΟΥΚ	0	3	-100
1	TT	ΤΤ	0.387	2	3.48
1	YALKO	ΥΑΛΚΟ	0	3	-100
1	YGEIA	ΥΓΕΙΑ	0.27	3	-3.57
1	FIER	ΦΙΕΡ	0	3	-100
1	FINTO	ΦΙΝΤΟ	0	3	-100
1	FLEJO	ΦΛΕΞΟ	0	3	-100
1	FORU	ΦΟΡΘ	0.184	2	2.22
1	FOYNTL	ΦΟΥΝΤΛ	0	3	-100
1	FRIGO	ΦΡΙΓΟ	5.4	2	1.12
1	FRLK	ΦΡΛΚ	3	2	2.04
1	FFGKRP	ΦΦΓΚΡΠ	8.3	2	1.22
1	XAIDE	ΧΑΙΔΕ	0	3	-100
1	XAKOR	ΧΑΚΟΡ	0	3	-100
1	XALYB	ΧΑΛΥΒ	0	3	-100
1	XATZK	ΧΑΤΖΚ	0	3	-100
1	XKRAN	ΧΚΡΑΝ	0	3	-100
2	ath_atg_last	754,71
2	ath_atg_chng	<FONT COLOR=red>-0,63</FONT>
2	ath_atg_trddate	04.11.2011 09:51
2	ath_turnover	3,96
2	ath_issues_adv	30
2	ath_issues_dec	29
2	ath_issues_unc	9

 

 

 

 

να το πεταξω μεσα σε μια βδ, αλλα γρηγορα happy.gif

 

ολη η διαδικασια ειναι εδω

 

 

>DWORD CALLBACK FeedData(LPVOID lpVoid)
{
typedef my::SH<HINTERNET,WinHttpCloseHandle> Internet;
Internet hRq;
Internet hSession;
Internet hConnection;
DWORD dwSize;
DWORD dwDownloaded;
std::vector<char> buffer;
char *buf;
wchar_t tmp[20];
std::wstring page;
std::wregex	regex(L".*?\t(.*?)\t(.*?)\t(.*?)\t.*?\t(.*?)\r");
std::wsregex_iterator rend;
sqlite3_stmt *stmt;
int id = static_cast<int>(time(NULL));
std::wstring obj(L"/markets/tickerfeed.asp?dummy=");

obj += _itow_s(static_cast<int>(rand() * time(NULL)),tmp,10);
hSession = WinHttpOpen(lpszUserAgent,0,0,0,0);
if(!hSession)
	return 1;
hConnection = WinHttpConnect(hSession,L"www.naftemporiki.gr",INTERNET_DEFAULT_HTTP_PORT,0);
if(!hConnection)
	return 2;
hRq = WinHttpOpenRequest(hConnection,L"GET",obj.c_str(),0,0,0,0);
if(!hRq)
	return 3;

if(!WinHttpSendRequest(hRq,0,0,0,0,0,0))
	return 4;
if(!WinHttpReceiveResponse(hRq,0))
	return 5;
do
{
	dwSize = 0;
	if(!WinHttpQueryDataAvailable(hRq,&dwSize))
		break;
	buf = new char[dwSize];
	if(!WinHttpReadData(hRq,buf,dwSize,&dwDownloaded))
	{
		delete[] buf;
		break;
	}

	buffer.insert(buffer.end(),buf,buf + dwDownloaded);
	delete[] buf;
}while(dwSize > 0);
page.resize(buffer.size());

MultiByteToWideChar(CP_UTF8,0,buffer.data(),buffer.size(),&page[0],page.size());

auto s = clock();//test

sqlite3_exec(g_Database,"BEGIN;",NULL,NULL,NULL);
for(std::wsregex_iterator it(page.begin(),page.end(),regex);
	it != rend; ++it)
{
	sqlite3_prepare_v2(
		g_Database,
		"INSERT INTO rl_data VALUES(NULL,?1,?2,?3,?4,?5);",-1,
		&stmt,
		NULL);
	sqlite3_bind_int(stmt,1,id);
	sqlite3_bind_text16(stmt,2,(*it)[1].str().c_str(),-1,NULL);
	sqlite3_bind_text16(stmt,3,(*it)[2].str().c_str(),-1,NULL);
	sqlite3_bind_double(stmt,4,_wtof((*it)[3].str().c_str()));
	sqlite3_bind_double(stmt,5,_wtof((*it)[4].str().c_str()));
	sqlite3_step(stmt);
	sqlite3_finalize(stmt);
	
}
sqlite3_exec(g_Database,"END;",NULL,NULL,NULL);

auto res = (clock() - s) /1000;//test
return 0;
}

 

 

 

Δημοσ.

Δυστυχώς δεν έχω πολυ-δουλέψει με regexs και μάλλον δεν μπορώ να βοηθήσω. Αλλά από ότι κατάλαβα θες να φιλτράρεις περιεχόμενο που διαβάζεις από την Ναυτεμπορική και το αποτέλεσμα να το βάλεις σε μια δική σου db, σωστά; Αν ναι, τι ακριβώς κάνει το regex που έχεις βάλει; Κάνει skip όλα τα "(.)\t\r" ;

Δημοσ.

Καθε page που κατεβαζω αποτελειται απο καμποσα rows της μορφης

 

column1 \t column2 \t column3 \t column4 \r

column1 \t etc...

 

Δηαλδη τα πεδια χωριζονται με tab και οι γραμμες με \r

 

Το προβλημα ειναι οτι κανει 10 δευτερολεπτα ΕΛΕΟΣ για 9 kbyte ΕΛΕΟΣ

Δημοσ.

Έχεις δοκιμάσει με τον κλασικό τρόπο της wscanf() ή έστω και των fgetws() & wctok() να χρονομετρήσεις διαφορές; Μπορεί να είναι ταχύτερες.

Δημοσ.

Δοκίμασε να αλλάξεις τα παρακάτω και δες αν έχει διαφορά:

 

1)Η WinHttpQueryDataAvailable() όταν τελειώσουν τα δεδομένα θα θέσει στο dwSize 0 και θα επιστρέψει TRUE. ( Δε σου χτυπάει κατά το initialization του buf με 0 στοιχεία? )

 

2)Το length της page δεν είναι ανάγκη να είναι το ίδιο με του buffer.

 

Πες π.χ. ότι στα data παίρνεις υπάρχουν ελληνικοί χαρακτήρες. Ο ελληνικός χαρακτήρας χρειάζεται δύο bytes αλλά μπορέι να αποθηκευτεί σε ένα wchar_t.

 

Για να βρεις το length που χρειάζεσαι κάλεσε την MultiByteToWideChar() παιρνώντας NULL και 0 στα 2 τελευταία arguments.

 

>
int pageLength=MultiByteToWideChar(CP_UTF8,0,buffer.data(),buffer.size(),NULL,0);
page.resize(pageLength);
MultiByteToWideChar(CP_UTF8,0,buffer.data(),buffer.size(),&page[0],page.size());

Δημοσ.

1) Οχι, το new T[0] σου επιστρεφει κανονικοτατο δεικτη που θελει και κανονικοτατο delete[]

2) Ποιος ο λογος να περω 9 kb δυο φορες; Θελω ταχυτητα οχι μνημη.

 

 

Το προβλημα μου ειναι το regex που κανει 10 δευτερολεπτα (χωρις insert στη db)

Δημοσ.

Το δοκίμασες με τις συναρτήσεις που σου είπα να δεις αν είναι καλύτερα;

 

Βαριεμαι; Μπορω να το κανω και on the fly αλλα γιατι να μπω στο κοπο εφοσον υπαρχει το regex για αυτη τη δουλεια.

Δημοσ.

Βαριεμαι; Μπορω να το κανω και on the fly αλλα γιατι να μπω στο κοπο εφοσον υπαρχει το regex για αυτη τη δουλεια.

ενα καιρό δούλευα πολύ regex αλλα έχει περάσει πολύς καιρός και δεν τα θυμάμαι... ψάξτο λίγο σίγουρα κάτι πιο απλό πρέπει να κάνεις για να παίξει.

 

το comment το έκανα περισσότερο για απάντηση στον migf1 οτι ίσα ίσα τα regex κάνουν τις βαριές δουλείες πιο έυκολες γιαυτό τα έχουμε :)

Δημοσ.

το comment το έκανα περισσότερο για απάντηση στον migf1 οτι ίσα ίσα τα regex κάνουν τις βαριές δουλείες πιο έυκολες γιαυτό τα έχουμε :)

Εξαρτάται αφενός από την εσωτερική υλοποίηση (engine) κι αφετέρου από τη σύνταξη της σε επίπεδο χρήσης. Η υποστήριξη non-ASCII alphabets (agnostic vs pre-compatible) περιπλέκει ακόμα περισσότερα τα πράγματα. Και προφανώς παίζει ρόλο και το input.

 

Άλλο είναι το "πιο εύκολο" για τον χρήστη κι άλλο είναι το "πιο γρήγορο" για το πρόγραμμα.

 

Edit: για παράδειγμα: http://swtch.com/~rsc/regexp/regexp1.html

Δημοσ.

ναι καταλαβαίνω πώς το εννοείς αλλα δεν νομίζω να έχουν κάνει τόσο τραγική την υλοποίηση της C.. απο εκεί και πέρα λύνουν τα χέρια σε πολλά πράγματα (θυμάμαι πριν πολλά χρόνια που ασχολιόμουν με scripting σε mIRC πρόσθετα on the fly λέξεις και γινόταν έλεγχος πολύ γρήγορα μέσα απο μια sqlite database που είχα δημιουργήσει, γιατι η υλοποίηση των regular expressions εκεί ήταν πολύ γρήγορη) βέβαια είσαι πολύ πιο έμπειρος στο θέμα οπότε θα ξέρεις και κάτι παραπάνω (τα έχω παρατήσει εδώ και καιρό όλα αυτά - καταραμένη δουλειά)

Δημοσ.

Για το initialization ενός array με 0 στοιχεία έχεις δίκιο.Δεν δημιουργεί πρόβλημα.

 

Αυτό που ήθελα να πω για την MultiByteToWideChar() είναι ότι αν δεν την καλέσεις πρώτα για να δεις το length σε wchar_t που χρειάζεσαι, υποθέτοντας ότι πρέπει να είναι το ίδιο με το size του buffer, θα έχεις garbage data τα οποία θα δοκιμάσει να κάνει match το regular expression.

 

 

Το παράδειγμα σου όπως το έχεις,στο PC μου, κάνει 13 δευτερόλεπτα.

Αν θέσω το size του page στην τιμή που μου επιστρέφει η MultiByteToWideChar() κάνει 1 δευτερόλεπτο.

 

( Σε release mode και στις δύο περιπτώσεις κάνει 0 δευτερόλεπτα :o )

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...