Instrumentacja kodu i pomiar czasu

0

Dzień dobry,
mam za zadanie przeprowadzić instrumentacje i pomiar czasu, na wybranych elementach tablicy 134217727 elementowej i utknęłam na instrumentacji gdzie wartość wskaźnika zamiast pokazywać wartości się zeruje na całej tablicy:

using System;

namespace ConsoleApp1
{
    class Program
    {
        //static int duch;
        static void Main(string[] args)
        {
            int[] tab = new int[134217727]; // 2^27-1
            ulong duch = 0;

            //uzupełnienie tablicy
            for (uint i = 1; i < 134217727; i++)
            {
                tab[i] = tab[i - 1] + 3;
                duch++;
            }

            //sprawdzenie uzupełnienia tablicy
            Console.WriteLine(tab[64]);
            //Console.WriteLine(tab[55555]);

            //instrumentacja
            Console.WriteLine("a\twywołania");  //nagłówek tabeli
            for (uint j = 67108854; j < 67108874; j++)
            {
                duch=0;
                int c=tab[j];
                Console.WriteLine("{0}\t{1}",j,duch);
            }

            //pomiar czasu

        }
     }
}

byłabym również wdzięczna za wskazówki jak zabrać się za pomiar czasu :)

0

A na czym ta instrumentacja ma polegać?
Pomiar czasu najłatwiej wykonać wykorzystująć klasę Stopwatch z namespace System.Diagnostics

0

Co to znaczy zerować się na całej tablicy?

0

Instrumentacja - kompilator dodaje kawałek kodu do każdej funkcji, który zlicza liczbę wywołań, czas wykonania itd.

umiem to wykonać na ciągu, lecz przeniesienie tego na tablicę sprawia mi problem...
nie zlicza mi wywołań "duch"

jeśli to pomoże to tututaj jest mam instrumentację na ciągu:

using System;
namespace AISD1
{
    class Program
    {
        static ulong dynia;
        static uint tab(uint a)
        {
            switch (a)
            {
                case 0: return 1;
                case 1: return 1;
                default: dynia++; 
                return tab(a-1)+tab(a-1);
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("a\tsasiad"); //nagłówek tabeli
            for (uint u = 15; u < 36; u++)
            {
                dynia = 0;
                ulong b = tab(u);
                Console.WriteLine("{0}\t{1}", u, dynia);
            }
        }
    }
}
```c#
0

W jakim celu robisz duch=0;?

0

w celu wyzerowania go po poprzedniej pętli, jeżeli tego nie zrobię to będzie wynosił 134217726, a jego wartość nie będzie się zmieniać dla poszczególnych elementów tablicy,a na tym mi zależy, żeby przy każdym elemencie widzieć ilość wywołań

0

To pewnie jest banał, tylko nikt nie może pojąć co ma robić ten program.

Jeżeli nie postarasz się żeby opisać zrozumiale problem, to nic z tego nie będzie.

Rozpisz co ma robić.

0

Oto Zadanie:
Zweryfikować ocenę średniej i pesymistycznej złożoności wyszukiwania liniowego i binarnego.
Przeprowadzić analizę za pomocą instrumentacji i pomiarów czasu (dwie odrębne metody). W porównaniu wykorzystać tablice liczb całkowitych o rozmiarze rzędu 230 bajtów (228 elementów typu uint/int).

0

Mogłabyś opisać problem tak, aby ktoś niepoświęcając najlepszych lat swojego życia był w stanie Tobie pomóc?

Nie rozumiem co ma robić kod, ale widze, że wypisujesz w pętli zmienną która ma wartość 0 i się zastanawiasz czemu wypisuje 0.

Prawdopodobnie musisz napisać funkcje, która obliczy wartość dla duch, a nie przypisywać jej 0.

0

dobra to inaczej...
jak zmieć kod działający na ciągu tak, żeby działał na tablicy?

0
        static uint dynia;
        static uint tab(uint a)
        {
            switch (a)
            {
                case 0: return 1;
                case 1: return 1;
                default:
                    dynia++;
                    return tab(a - 1) + tab(a - 1);
            }
        }
        static void Main(string[] args)
        {
            uint[] kalafiorFullHD = new uint[1080];

            Console.WriteLine("a\tsasiad"); //nagłówek tabeli
            for (uint u = 15; u < 36; u++)
            {
                dynia = 0;
                tab(u);
                kalafiorFullHD[u] = dynia;
                Console.WriteLine("{0}\t{1}", u, kalafiorFullHD[u]);
            }
            Console.ReadKey();
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1