C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скрипта
300 UAHПредоставленый ниже сорц, нужно оптимизировать работу, а точнее выявить причину, почему со временем падают скорость обработки в секунду в таймере 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;
}
}
}
}
Отзыв заказчика о сотрудничестве с Святославом Семчишиным
C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скриптаЧеловек просто замечательный, как в общении, так и работе, пришел сразу с готовым решением, с удовольствием еще буду работать))))
![]()
Отзыв фрилансера о сотрудничестве с заказчиком
C# System.Threading, System.Net.Sockets, System.IO Оптимизация работы скриптаОтличный заказчик, четко поставленное задание, быстрые ответы на поставленные вопросы, моментальная оплата. Только положительные впечатления от сотрудничества!
-
Добрый вечер. Подскажите, какое значение
-
treadcnt у вас выставлено?
-
Актуальные фриланс-проекты в категории C#
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x)
1000 UAH
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x) на идентичной аппаратной платформе (ESP32 + SX1268, 2W) по критериям дальности, пропускной способности, стабильности линка и энергопотребления. Провести тесты с замерами с учетом… C и C++, C# ∙ 2 дня 16 часов назад ∙ 2 ставки |
Создание плагина для интеграции с POS-системой Syrve, C#Разработать плагин для POS-системы Syrve (on-premise), который устанавливается на сервер заведения. Плагин должен: (1) передавать на наш сервер данные в режиме реального времени — заказы, статусы столов, платежи, чеки; (2) принимать команды от Reservble — подтверждения… C#, Веб-программирование ∙ 5 дней 13 часов назад ∙ 14 ставок |
Добробка в существующей версии 1с розница блока для РЦ(распределительного центра)В общем поясню, что у нас за база - есть общий сервер, где есть база Розница (где ставятся все приходы) - база УТП, куда переливаются все продажи - считается наценка, остатки по складам - маленькие базы розничных магазинов. По обменам у нас магазины обмениваются с базой Розница… C и C++, C# ∙ 13 дней 5 часов назад ∙ 6 ставок |