C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скрипта
25 PLNПредоставленый ниже сорц, нужно оптимизировать работу, а точнее выявить причину, почему со временем падают скорость обработки в секунду в таймере 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;
}
}
}
}
Opinia zleceniodawcy o współpracy z Svyatoslav Semchishin
C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скриптаЧеловек просто замечательный, как в общении, так и работе, пришел сразу с готовым решением, с удовольствием еще буду работать))))
![]()
Opinia freelancera o współpracy z ze zleceniodawcą
C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скриптаОтличный заказчик, четко поставленное задание, быстрые ответы на поставленные вопросы, моментальная оплата. Только положительные впечатления от сотрудничества!
-
Добрый вечер. Подскажите, какое значение
-
treadcnt у вас выставлено?
-
Aktualne zlecenia dla freelancerów w kategorii Aplikacje desktopowe
Modyfikacja w pracy emulatora
164 PLN
Witaj. Ściągnąłem z Internetu emulator automatu do gier gaminator cf final. Bardzo mi się podoba, ale są tam niedociągnięcia. Jest panel administracyjny, ale otwiera się swobodnie, a nie zamyka w ogóle. Zamyka się tylko razem z aplikacją. A dane po zmianach w panelu… Aplikacje desktopowe ∙ 6 dni 11 godzin temu ∙ 10 ofert |
Opracowanie niestandardowego oprogramowania (aplikacja na Androida + CMS) dla kiosków samoobsługowych SUNMI K2 (fast food)
82 PLN
Szukamy doświadczonego zespołu lub programisty Android na poziomie średnim/zaawansowanym (możliwe, że z umiejętnościami Full-stack) do stworzenia własnego oprogramowania dla kiosków samoobsługowych sieci fast food. Obecnie nasze terminale działają na bazie gotowego chmurowego… Content Management Systems, Aplikacje desktopowe ∙ 11 dni 7 godzin temu ∙ 23 oferty |