Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di pishta
    Registrato dal
    May 2006
    Messaggi
    138

    codice performante in C#

    Salve a tutti. mi trovo a scrivere del codice in C# (windows form). Come posso ottimizzare tale codice per avere prestazioni al più alto livello possibile?

    I dubbi sono su

    STRUTTURE DATI:
    Meglio usare array multidimensionali oppure ArrayList ?


    CICLI
    meglio usare for, foreach o while?

    considerando che devo fare molte nidificazioni


    Grazie

  2. #2
    gli arrayList sono Array dinamici, io li preferisco quando non conosco le grandezze della struttura a priori.

    per quanto riguarda i cicli........
    citando la teoria:

    for quando si conosce a priori il numero di iterazioni
    per ordinare un array so che lo devo scorrere comunque tutto

    foreach idem su collection o IEnumerable

    while quando non conosco il numero di iterazioni
    per cercare un dato, mi fermo appena l'ho trovato

    ma questa è solo teoria.

    In pratica, vai a vedere Generics e IEnumeradble<>. Trovi molta documentazione e puoi sfruttare le potenzialità del nuovo framework, ad esempio List<int> per una lista dinamica di interi (migliori performance).


    Citazione:
    The primary difference is that the extension methods defined for IQueryable<T> take Expression objects instead of Func objects, meaning the delegate it receives is an expression tree instead of a method to invoke. IEnumerable<T> is great for working with in-memory collections, but IQueryable<T> allows for a remote data source, like a database or web service. I walk through these differences in this article: C# 3.0 and LINQ .

  3. #3
    Ho una certa esperienza nel scrivere codice performante dato che una dozzina di anni fa scrissi un software di scacchi, e un motore di ricerca.

    Il concetto non è l'istruzione più volece per il computer, ma l'idea. Solamente l'idea giusta ti permette ri realizzare dei metodi con velocità 10 volte più performati di quella apparentemente più banale.

    I metodi di ricerca negli array con iterazioni sono da escludersi quando si vogliono fare ricerche veloci su mole di dati consistenti, in tal caso occorre creare una "sort" collection contenente gli elementi dell'array ordinati secondo un criterio adatto. (in genere se usi la collection puoi anche non usare l'array e non avere quindi duplicati).

    Poi la ricerca la esegui con un algoritmo che divide (ideologicamente) la collection a metà e guarda se casualmente lì a metà si trova il dato che cerchi, se no, prendi in considerazione solamente la metà che in base al criterio di sort può contenete il dato che cerchi, e rieffettui questa operazione nuovamente dividendo ideologicamente la collection.. fino a che non lo gai trivato o dcopri che non è presente.

    Queta metodologia ti accellera la ricerca di molto con grosse dimensioni di dati.

  4. #4
    @cmsaspnet.com:
    grazie per la citazione del "Divide et impera", ma è "una" situazione tra tantissime.

    pishta ci può dare sicuramente informazioni più precise sul problema che deve risolvere, magari possiamo così consigliare l'approccio migliore o addirittura fare una valutazione dei costi (detto ordine di complessità).

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.