παπι Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Μπορει να μου πει καποιος γιατι αυτο εδω το regex (L".*?\t(.*?)\t(.*?)\t(.*?)\t.*?\t(.*?)\r") κανει 8 δευτερολεπτα για να ματσαρει 300+ ματς ; Θελω αυτο εδω >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 να το πεταξω μεσα σε μια βδ, αλλα γρηγορα ολη η διαδικασια ειναι εδω >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; }
migf1 Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Δυστυχώς δεν έχω πολυ-δουλέψει με regexs και μάλλον δεν μπορώ να βοηθήσω. Αλλά από ότι κατάλαβα θες να φιλτράρεις περιεχόμενο που διαβάζεις από την Ναυτεμπορική και το αποτέλεσμα να το βάλεις σε μια δική σου db, σωστά; Αν ναι, τι ακριβώς κάνει το regex που έχεις βάλει; Κάνει skip όλα τα "(.)\t\r" ;
παπι Δημοσ. 8 Νοεμβρίου 2011 Μέλος Δημοσ. 8 Νοεμβρίου 2011 Καθε page που κατεβαζω αποτελειται απο καμποσα rows της μορφης column1 \t column2 \t column3 \t column4 \r column1 \t etc... Δηαλδη τα πεδια χωριζονται με tab και οι γραμμες με \r Το προβλημα ειναι οτι κανει 10 δευτερολεπτα ΕΛΕΟΣ για 9 kbyte ΕΛΕΟΣ
migf1 Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Έχεις δοκιμάσει με τον κλασικό τρόπο της wscanf() ή έστω και των fgetws() & wctok() να χρονομετρήσεις διαφορές; Μπορεί να είναι ταχύτερες.
nkcc Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Δοκίμασε να αλλάξεις τα παρακάτω και δες αν έχει διαφορά: 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());
παπι Δημοσ. 9 Νοεμβρίου 2011 Μέλος Δημοσ. 9 Νοεμβρίου 2011 1) Οχι, το new T[0] σου επιστρεφει κανονικοτατο δεικτη που θελει και κανονικοτατο delete[] 2) Ποιος ο λογος να περω 9 kb δυο φορες; Θελω ταχυτητα οχι μνημη. Το προβλημα μου ειναι το regex που κανει 10 δευτερολεπτα (χωρις insert στη db)
migf1 Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Το δοκίμασες με τις συναρτήσεις που σου είπα να δεις αν είναι καλύτερα;
παπι Δημοσ. 9 Νοεμβρίου 2011 Μέλος Δημοσ. 9 Νοεμβρίου 2011 Το δοκίμασες με τις συναρτήσεις που σου είπα να δεις αν είναι καλύτερα; Βαριεμαι; Μπορω να το κανω και on the fly αλλα γιατι να μπω στο κοπο εφοσον υπαρχει το regex για αυτη τη δουλεια.
migf1 Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Επειδή τα regex συνήθως είναι "βαρια" πράματα (βέβαια δεν ξέρω τη συγκεκριμένη υλοποίηση της C++)
Luciddream Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Βαριεμαι; Μπορω να το κανω και on the fly αλλα γιατι να μπω στο κοπο εφοσον υπαρχει το regex για αυτη τη δουλεια. ενα καιρό δούλευα πολύ regex αλλα έχει περάσει πολύς καιρός και δεν τα θυμάμαι... ψάξτο λίγο σίγουρα κάτι πιο απλό πρέπει να κάνεις για να παίξει. το comment το έκανα περισσότερο για απάντηση στον migf1 οτι ίσα ίσα τα regex κάνουν τις βαριές δουλείες πιο έυκολες γιαυτό τα έχουμε
migf1 Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 το comment το έκανα περισσότερο για απάντηση στον migf1 οτι ίσα ίσα τα regex κάνουν τις βαριές δουλείες πιο έυκολες γιαυτό τα έχουμε Εξαρτάται αφενός από την εσωτερική υλοποίηση (engine) κι αφετέρου από τη σύνταξη της σε επίπεδο χρήσης. Η υποστήριξη non-ASCII alphabets (agnostic vs pre-compatible) περιπλέκει ακόμα περισσότερα τα πράγματα. Και προφανώς παίζει ρόλο και το input. Άλλο είναι το "πιο εύκολο" για τον χρήστη κι άλλο είναι το "πιο γρήγορο" για το πρόγραμμα. Edit: για παράδειγμα: http://swtch.com/~rsc/regexp/regexp1.html
Luciddream Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 ναι καταλαβαίνω πώς το εννοείς αλλα δεν νομίζω να έχουν κάνει τόσο τραγική την υλοποίηση της C.. απο εκεί και πέρα λύνουν τα χέρια σε πολλά πράγματα (θυμάμαι πριν πολλά χρόνια που ασχολιόμουν με scripting σε mIRC πρόσθετα on the fly λέξεις και γινόταν έλεγχος πολύ γρήγορα μέσα απο μια sqlite database που είχα δημιουργήσει, γιατι η υλοποίηση των regular expressions εκεί ήταν πολύ γρήγορη) βέβαια είσαι πολύ πιο έμπειρος στο θέμα οπότε θα ξέρεις και κάτι παραπάνω (τα έχω παρατήσει εδώ και καιρό όλα αυτά - καταραμένη δουλειά)
nkcc Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Για το initialization ενός array με 0 στοιχεία έχεις δίκιο.Δεν δημιουργεί πρόβλημα. Αυτό που ήθελα να πω για την MultiByteToWideChar() είναι ότι αν δεν την καλέσεις πρώτα για να δεις το length σε wchar_t που χρειάζεσαι, υποθέτοντας ότι πρέπει να είναι το ίδιο με το size του buffer, θα έχεις garbage data τα οποία θα δοκιμάσει να κάνει match το regular expression. Το παράδειγμα σου όπως το έχεις,στο PC μου, κάνει 13 δευτερόλεπτα. Αν θέσω το size του page στην τιμή που μου επιστρέφει η MultiByteToWideChar() κάνει 1 δευτερόλεπτο. ( Σε release mode και στις δύο περιπτώσεις κάνει 0 δευτερόλεπτα )
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα