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#
Написати програму на С# з використанням бази даних
500 UAH
Потрібно написати програму на мові програмування С# з підключенням бази даних (My Sql), на тему проектування та розробка бази даних " Планування робочого дня". Загалом частина програми вже є, але потрібно створити базу даних та підключити до певних умов, детальніше виконавцю.… C#, Бази даних ∙ 10 ставок |
Смарт-контракт для автораздачі токенів
25 000 UAH
Потрібно створити смарт-контракт для автораздачі токенів, який потім буде інтегрований в телеграм бот. Про автораздачу: - Людина переказує крипту (USDT або іншу криптовалюту...) на певну адресу гаманця. - Смарт-контракт автоматично відправляє на гаманець, з якого була… Blockchain, C# ∙ 4 ставки |
C# і go розробник під рефакторинг списку послуг |
Програмний застосунок «Довідник випускників коледжу» (С# Windows Form)Створити GUI-програмний застосунок «Довідник випускників коледжу»(Visual Studio С#, Windows Forms), який забезпечує: -ведення списку випускників; -додавання та оновлення інформації; -використання різних фільтрів та критеріїв для пошуку конкретних випускників за професійним… C#, Microsoft .NET ∙ 18 ставок |
СарафанУ пошуку backend розробника, який візьме наш проект на допрацювання. У нас є тг бот і додатки на мобільні. Відповідно під цим все справа є групи користувачів з різними рівнями доступу та особистими кабінетами. Каталог товарів та аутентифікація через телеграм. Плати реалізовані… C#, Microsoft .NET ∙ 6 ставок |