Отговори на тема  [ 80 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща
Генератор на случайни числа 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пон Апр 17, 2006 1:44 pm
Мнения: 291
Мнение Re: Генератор на случайни числа
Не съм ползвал C#, но все си мисля, че ако файловият указател FileStream fs и BinaryWriter bw са член променливи на класът Form1, то докато не бъде унищожен обекта инстанциран от Form1 няма да има причина тези променливи да бъдат също унищожени и съответните им хендлъри затворени. Предполагам, че в datareceived хендлъра има начин да достъпваш/споделяш член промеливите на обекта инстанциран от Form1.

Просто ми се струва, че в datareceived се вика много-много често и този овърхед с отварянето на потоци е причината за CPU usage.


Пет Мар 01, 2013 1:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Генератор на случайни числа
Незнам, ама процеса заема 60-70 %, ЦПУ е на 100% натоварено, а компа си работи нормално. Май измерването ще да е грешно нещо. Освен това, продължва да яде памет, гледам 55МБ глътнало за половин час, файла е 5 МБ към момента... А иначе fs i bw ги унищожавам (уж) след всяко използване.... не мога да си обясня какво става с тези... вече са 60 МБ докато пиша само....

Абе на есен ще взема да запиша един C# курс в Телерик.... :)


Пет Мар 01, 2013 2:13 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Генератор на случайни числа
Брей, вкарах го в пътя.... Сега отнема само 10-15% на процесора, използваната памет - константно около 5 МБ. Явно са тегави тея файлови операции, не си играят писачите.... :)

Код:
namespace WindowsFormsApplication1
{   
    public partial class Form1 : Form
    {
        long x = 0, y, btn2 = 0;
        byte[] buffer = new byte[200000];

        static FileStream fs = new FileStream("e:\\rdg99.data", FileMode.Append, FileAccess.Write);
        BinaryWriter bw = new BinaryWriter(fs);
   
        public Form1()
        {         
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
            x = 0;
            btn2 = 0;
            MessageBox.Show("COM PORT Opened...");
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int data_to_read;

            data_to_read = serialPort1.BytesToRead;

            x += data_to_read;
            for (y = 0; y < data_to_read; y++)
            {
                buffer[y] = (byte)serialPort1.ReadByte();
                bw.Write(buffer[y]);
            }

            if ((x >= 2000000000) || (btn2 == 1))
            {
                bw.Close();
                fs.Close();
                serialPort1.Close();
                MessageBox.Show("File Writed...");
               
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            btn2 = 1;
        }
           
    }
}


Сега остава да чакаме 2-3 седмици да се съберат резултати ;)

@tgi: качил съм ти към 70 000 000 чисълца.... някой от файловете са с нечетен размер, явно им няма младшата част на последното число....


Пет Мар 01, 2013 7:36 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение Re: Генератор на случайни числа
Каква е скоростта на rs-а ?

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Пет Мар 01, 2013 8:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Генератор на случайни числа
relsys написа:
...

@tgi: качил съм ти към 70 000 000 чисълца.... някой от файловете са с нечетен размер, явно им няма младшата част на последното число....


Ами добре, днес бях навън - преди да изляза почнах да го правя (списък събития -> спектър),
ама ще отиде още час може би та утре-вдруги ден белким имам нещо за покзване.
Последния байт да го игнорираме ще ни е последната грижа :D .

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Мар 01, 2013 9:53 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Генератор на случайни числа
syscop написа:
Каква е скоростта на rs-а ?


115200, обаче вървят по 2 байта през 1 - 1.2 ms, около 2 KB/sec..


Пет Мар 01, 2013 9:59 pm
Профил ICQ WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пон Апр 17, 2006 1:44 pm
Мнения: 291
Мнение Re: Генератор на случайни числа
По-скоро си представях нещо, като това отдолу, макар че ми е много криво да гледам използването на ReadByte вместо ReadTo, но нямам възможност да тествам :) Все пак ми е интересно дали ще се смъкнат % още :)
Код:
namespace WindowsFormsApplication1
{   
    public partial class Form1 : Form
    {
        long x = 0, y, btn2 = 0;
        byte[] buffer = new byte[200000];

        static FileStream fs = new FileStream("e:\\rdg99.data", FileMode.Append, FileAccess.Write);
        BinaryWriter bw = new BinaryWriter(fs);
   
        public Form1()
        {         
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
            x = 0;
            y = 0;
            btn2 = 0;
            MessageBox.Show("COM PORT Opened...");
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int data_to_read;

            data_to_read = serialPort1.BytesToRead;

            x += data_to_read;

            while (data_to_read) {
                if (y < 200000) {
                    buffer[y++] = (byte)serialPort1.ReadByte();
                    data_to_read--;
                } else {
                    bw.Write(buffer, 0, y);
                    y = 0;
                }
            }

            if ((x >= 2000000000) || (btn2 == 1))
            {
                if (y > 0) {
                    bw.Write(buffer, 0, y);
                    y = 0;
                }
                bw.Close();
                fs.Close();
                serialPort1.Close();
                MessageBox.Show("File Writed...");
               
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            btn2 = 1;
        }
           
    }
}


Последна промяна perlsite на Пон Мар 04, 2013 1:19 am, променена общо 2 пъти



Пет Мар 01, 2013 10:23 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пон Апр 17, 2006 1:44 pm
Мнения: 291
Мнение Re: Генератор на случайни числа
relsys написа:
syscop написа:
Каква е скоростта на rs-а ?


115200, обаче вървят по 2 байта през 1 - 1.2 ms, около 2 KB/sec..

При буфер от 200000, то значи ще имаш една файлова операция на всеки 100 сек. Би трябвало натоварването да е пренебрежимо малко, както и потенциалните загубени данни, ако крашне приложението лошо без да запише :)


Пет Мар 01, 2013 10:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение Re: Генератор на случайни числа
При тая скорост не трябва да можеш да различиш дали приложението работи или не, т.е. натоварването е пренебрежимо малко - на съвременен компютър не трябва да е повече от малка част от процента. Ако е повече има нещо, което не е наред.

п.п.
това MessageBox.Show("File Writed..."); трябва да е нещо от сорта MessageBox.Show("File is written...");

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Пет Мар 01, 2013 10:44 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пон Апр 17, 2006 1:44 pm
Мнения: 291
Мнение Re: Генератор на случайни числа
Да, но в момента файловите операциите са 2к/секунда и то въпросът не е до самите операции а до 2-те хиляди API извиквания :)


Пет Мар 01, 2013 11:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение Re: Генератор на случайни числа
Така де, The behavior is by design :D

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Пет Мар 01, 2013 11:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Генератор на случайни числа
Ми така е.... :)
В понеделник ще тествам новия дизайн.
А м/у другото, аз не познавам API-то, питах колеги дето дращят на шарпа, ама и те не ги знаеха тези... та ми дадоха линк към MSDN и от там попреписах, от там още тръгва на криво :)


Пет Мар 01, 2013 11:42 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Генератор на случайни числа
Ей ги всички дотук - статистиката е ниска но пикове на всички кратни на 256
места се виждат ясно, не е баш случайна работата.


Прикачени файлове:
TEMP.GIF
TEMP.GIF [ 16.51 KiB | Прегледано 6098 пъти ]

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/
Пон Мар 04, 2013 12:30 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: Генератор на случайни числа
perlsite написа:
...Все пак ми е интересно дали ще се смъкнат % още :)


Ами не, не смъкна, запази си се в рамките на 10-15%.....


Пон Мар 04, 2013 12:46 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Генератор на случайни числа
tgi написа:
Ей ги всички дотук - статистиката е ниска но пикове на всички кратни на 256
места се виждат ясно, не е баш случайна работата.

Мдамм,
Демек ако може да обобщим - не всичко дето хвърчи е злато, или не всичко което Мохамед носи до планината се яде ;)
Аз още в началото изразих някои съмнения по повод случайността на генератора като реализация:)
Но пак да повторя, в зависимост от приложението, и тази реализация може да се преглътне.
Ако търсиш наистина случайни числови поредици (значи се занимаваш с крипрография или ти е академичен интереса) трябва да промониш схемното решение :!:

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пон Мар 04, 2013 1:41 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 80 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни