Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!
300 ₴

C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скрипта

project complete


Предоставленый ниже сорц, нужно оптимизировать работу, а точнее выявить причину, почему со временем падают скорость обработки в секунду в таймере ps_speed_Tick для этого достаточно сделать до 100К циклов и вы сами все увидите, если нужно, список входного файла предоставлю, но он идет в построчном формате 

127.0.0.1,12345

127.0.0.2,12345


К исполнителю простые требование, понимание как работает многопоточное приложение и его оптимизация, в общем понимание 

using System.Net.Sockets;

using System.IO;

using System.Threading;


Если вы в этом разбираетесь или глядя на код видите в чем суть, тогда беритесь за работу.

Второе что мне крайне важно, коммуникабельность соискателя, не нужно думать, лучше говорите) !

Краткие сроки выполнения, по этому большая просьба, если у вас есть основная работа или то что оттянет срок исполнения, прошу заранее не подавать заявку!

Срок исполнения 1 день, в общем это задача с которой справится понимающий школьник)

Если нужно, могу выслать и проект VS13 целиком для исполнителя.

Денежки плачу своевременно через сейф

Для интересных людей, найдетс и другая работа, цените мое время и я оценю ваше по достоинству.

Указывайте свою ставку, но срок выполнения максимум воскресенье до 12am, выплата сразу после моей проверки на работоспособность скрипта!


СОРЦ:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

using System.IO;

using System.Threading;


namespace ps

{

    public partial class Form1 : Form

    {

        string[] host;

        int port;

        string outpf;

        string err_log_file = "C:\\err.log.txt";

        int pcnt = 0;

        int gpcnt;

        int i = 0;

        Thread t;

        int ps_statistic_good_cnt = 0;

        int ps_statistic_bad_cnt = 0;

        bool ps_statistic_timer_enable = false;

        private object valueLocker = new object();

        int ps_statistic_speed_cnt = 0;


        public Form1()

        {

            InitializeComponent();

        }

        private string[] explode(string separator, string source)

        {

            return source.Split(new string[] { separator }, StringSplitOptions.None);

        }


        private void Potok(Object x)

        {

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try

            {                

                if (Int32.Parse(ping_delay.Text) > 0) { s.SendTimeout = Int32.Parse(ping_delay.Text); }

                if (Int32.Parse(ping_delay.Text) > 0) { s.ReceiveTimeout = Int32.Parse(ping_delay.Text); }

                string[] h = explode(",", (string)x);

                s.Connect(h[0], port);                

                if (s.Connected == true)

                {                    

                    lock (valueLocker)

                    {

                        string wr = h[0] + "," + port + "," + h[1];

                        if (File.Exists(outpf))

                        {

                            File.AppendAllText(outpf, wr + "\r\n");

                        }

                        else

                        {

                            using (FileStream fs = File.Create(outpf))

                            {

                                Byte[] info = new UTF8Encoding(true).GetBytes(wr + "\r\n");

                                fs.Write(info, 0, info.Length);

                            }

                        }

                       

                        ps_statistic_good_cnt++;

                    }

                }

            }

            catch (Exception ex)

            {

                ps_statistic_bad_cnt++;

                //MessageBox.Show(ex.Message);

            }

            finally

            {

                if (s.Connected == true)

                {

                    s.Close();                    

                }

                ps_statistic_speed_cnt++;

            }

            pcnt--;

        }


        private void Go()

        {

            for (i = 0; i < host.Count(); i++)

            {

                while (gpcnt == pcnt) System.Threading.Thread.Sleep(1000);

                if (gpcnt > pcnt)

                {

                    pcnt++;

                    Thread ptk = new Thread(Potok);

                    ptk.Start(host[i]);

                }

            }

            MessageBox.Show("Complete");

            ps_statistic_timer_enable = false;

            pcnt = 0;

            i = 0;

            ps_statistic_good_cnt = 0;

            ps_statistic_bad_cnt = 0;

        }


        private void button1_Click(object sender, EventArgs e)

        {

            if (iptype.Text == "list")

            {

                StreamReader fr = new StreamReader(@iplist.Text + ".txt");

                host = fr.ReadToEnd().Split('\n');

            }

            port = Int32.Parse(portx.Text);

            gpcnt = Int32.Parse(treadcnt.Text);

            outpf = resultfile.Text + "_" + portx.Text + ".txt";

            t = new Thread(Go);

            t.Start();

            ps_statistic_timer_enable = true;

        }


        private void ps_statistic_timer_Tick(object sender, EventArgs e)

        {

            if (ps_statistic_timer_enable == true)

            {

                ps_statistic_threads.Text = pcnt.ToString() + " of " + gpcnt;

                ps_statistic_processes.Text = i.ToString() + " of " + host.Count();

                ps_statistic_good.Text = ps_statistic_good_cnt.ToString();

                ps_statistic_bad.Text = ps_statistic_bad_cnt.ToString();

            }

        }


        private void ps_speed_Tick(object sender, EventArgs e)

        {

            if (ps_statistic_timer_enable == true)

            {

                ps_statistic_speed.Text = ps_statistic_speed_cnt.ToString();

                ps_statistic_speed_cnt = 0;

            }

        }

    }

}



Client's feedback about the contractor Святославе Семчишине

Quality
Professionalism
Price
Availability
Terms

Человек просто замечательный, как в общении, так и работе, пришел сразу с готовым решением, с удовольствием еще буду работать))))

TuChappa З. TuChappa Зайкова | Safe Safe

Freelancer's feedback about the client TuChappa Зайковой

Payment
Task formulation
Requirements
Availability

Отличный заказчик, четко поставленное задание, быстрые ответы на поставленные вопросы, моментальная оплата. Только положительные впечатления от сотрудничества!

Святослав С. Святослав Семчишин | Safe Safe



  1. 1 day800 ₴
    Антон Мыслицкий
     539   8    0

    Могу помочь с проектом

    Ukraine Kyiv | 12 February 2017 |
  2. 1 day300 ₴Winning proposal
    Святослав Семчишин
     311  verified   1    0

    Посмотрел код. Готов предоставить решение)

    Ukraine Kyiv | 12 February 2017 |

Client
TuChappa Зайкова
Russia Moscow  2    0
Project published
11 February 2017
108 views