Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
PC game stream catre Nvidia Shiel...

Pompa de apa HEPU ?!

Vreau o masina electrica de tocat...

Cum ajunge remorca de tir inapoi ...
 Alt "Utilizator nou" pe T...

ULBS INFORMATICA

Index preturi

Boxa membrana tweeter infundata
 Am nevoie de poze cu un curcubeu

Whisky for Mac

Xiaomi 14 Gpay

Izolare zid exterior de scandura
 Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...

De ce sunt oamenii nostalgici
 

[Provocare] Sortarea datelor dintr-un fisier mare

- - - - -
  • Please log in to reply
4 replies to this topic

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Se da un fisier text de ~1.4 GB cu diverse partide de sah.

Ce cod ati scrie (orice limbaj/framework) pentru a obtine un fisier la fel de mare, dar cu partidele sortate dupa scor (albul castiga, negrul castiga, remiza)?

Ce timpi obtineti fata de viteza medie de citire/scriere a unui fisier pe discul vostru?

http://www.top-5000.nl/pgn.htm (Million Base 2.2) (arhiva e un self extract 7Zip, pentru cine nu doreste sa ruleze executabilul pt dezarhivare).

#2
f300

f300

    30k si ma duc

  • Grup: Senior Members
  • Posts: 30,000
  • Înscris: 27.09.2008
Sortare adica impartire pe 3 caprarii dupa care alea sint puse cap la cap nu? Daca iti permiti RAM-ul (sau un buffer oarecare de fapt) faci o parcurgere cap-coada si le scrii direct pe alea cu albul cistiga una dupa alta si pe celelalte in cite un buffer dupa care cind ai terminat cu fisierul initial le scuipi si pe alea dupa.

Daca nu-ti permiti spatiul faci trei parcurgeri, la prima ai pus in fisierul destinatie pe alea in care albul cistiga, la a doua negrul si la a treia remiza.

#3
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,025
  • Înscris: 24.02.2006
ce resursa este critica in aceasta provocare?
1. daca e vorba de ram, atunci cea mai simpla varianta e sa citesti fisierul, linie cu linie, si sa-i salvezi continutul in 3 fisiere, in functie de scor. dupa asta trebuie doar sa concatenezi cele 3 fisiere in unul singur.
2. daca memoria e suficienta, atunci as pastra cele 3 "fisiere" (care ar fi de fapt niste array-uri de string-uri) in memorie si le-as scrie la sfarsit intr-un singur fisier mare

in primul caz as avea nevoie de suficient ram cat sa tin o singura linie din fisier (maxim cateva sute de caractere) si 2-3 variabile. as avea, in schimb, o gramada de operatiuni cu discul.
in al doilea caz mi-ar trebui destul de mult ram, dar as limita la minim numarul de operatiuni cu discul (fiecare bit de informatie este citit si scris o singura data)

in ambele cazuri procesorul ar fi neglijabil, operatiunile sunt foarte simple.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Nu m-am gandit sa impun restrictii. Ar fi interesanta o comparatie, gen varianta asta foloseste putina memorie dar dureaza cu atat mai mult, cealalata incarca totul in RAM si e mai rapida cu atat.

PS: provocarea se adreseaza incepatorilor, sa mai vada si alt fel de date decat cele cu care-s obisnuiti si sa poata incerca pe un set de date mai mare.

Edited by dani.user, 17 June 2017 - 16:42.


#5
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Legat de viteza de scriere, pe un server mid-level pentru uz personal am reusit sa ating 200-230 writes / s folosind O_DIRECT si O_SYNC. Nu am vrut sa renunt la durabilitate.

Ce mi s-a parut interesant e cat de mult a scazut nr de syscalls cu O_DIRECT, de pe la 2000-3000 pe operatie pana la sub 100 daca imi amintesc bine, sub Linux.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate