- Mozilla Firefox
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Mesterséges Intelligencia topik
- Proxmox VE
- Ubuntu Linux
- OpenWRT topic
- Linux kezdőknek
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Robotkart irányított a majom a kínai Neuralink agyi chipjével
- Hálózati / IP kamera
-
IT café
Új hozzászólás Aktív témák
-
Livius
őstag
válasz pmonitor #15301 üzenetére
Szerintem az már inkább az az eset lehet, amikor már maga a szerző C vagy C++-ban idióta módon nem optimálisan csinálta a dolgokat, és azon aztán nincs mit észre venni már az optimalizált fordítónak sem.
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
Livius
őstag
válasz pmonitor #15304 üzenetére
Észre veszi, csak be kell kapcsolni az optimalizációs kapcsolót is. Ha nincs bekapcsolva vagyis -O0 van a gcc-ben akkor nem csinál rajta semmi okosítást, mivel a szerző azt mondta az -O0-val, hogy ne is csináljon rajta optimalizálást.
első: https://godbolt.org/z/Ydox7q
második: https://godbolt.org/z/3EjYGEMinimum -O1-et, de ha -Ofast-ot írsz akkor még egy kicsit módosít rajta, de mind a két esetben a két kódra ugyan az az asm kód lesz az optimalizálás eredménye, szóval tud már mindent amit kell. Sose becsüld le a gcc erejét, Luke!
[ Szerkesztve ]
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
Livius
őstag
válasz pmonitor #15311 üzenetére
De a gcc-nek nem az a feladata hogy a te C nyelvedet alakítsa alternatív jobbra, az a te dolgod. Így kb azt várod el tőle, hogy már a C nyelvben lásson és keressen optimálisabb megoldást a user hülyeségére, de szerintem a fordító nem ott fogja ezt keresni leginkább, tehát a szerző C-ben írt részébe minimálisan hajlandó csak belenyúlni a problémák elkerülése végett. Az igazán optimális fordítás nem hülye biztos, az alkotónak a C/C++-ban is tudni kell hogy miből lehet optimálisat fordítani.
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
Livius
őstag
válasz pmonitor #15314 üzenetére
Most nem azért, de olyan optimalizálást vársz el, hogy a gcc legyen olyan intelligens, és akár a matematikai eljárásodat is bírálja felül, ami hülyeség. Ez így nem működhet, annak kell ott fordulni amit Te oda leírsz (te vagy a szellemi szerző, nem a gcc), az ilyen szintű dolgokon az alkotónak kell gondolkodni, hogy optimális legyen. Biztos lehetne olyan fordítóprogramokat csinálni, amik ezt a szintet is tudnák, csak onnantól kezdve azok ilyen optimalizációs beállítással, az iparban kb tiltottak lennének rövid időn belül, az akár előre beláthatatlan programbugoktól.
[ Szerkesztve ]
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
Livius
őstag
válasz pmonitor #15319 üzenetére
Az a baj hogy te matematikai formulák optimalizációját várod el a gcc-től már magába a C/C++ nyelvben (még csak szimbolikus matematikai szinten), de szerintem a gcc-nek nem ez a feladata, és nem erre találták ki az optimalizációját. Ha ebbe durván bele nyúlna, egy ilyen optimalizációs szint, akkor soha az életben nem lenne biztonságos ahhoz, hogy egy önvezető autó vagy repülőgép szabályzórendszerében használható legyen, de még lehet sokkal kisebb kockázati szinten is csak a bugokat termelné, ezért ilyen irányba gondolom sose fejlesztették ezt.
De ha neked ez nem tetszik, akkor tényleg itt a lehetőség, írd át a gcc forrását hogy ezt tudja, és adj be rá egy pull-requeste-et. https://github.com/gcc-mirror/gcc
Amúgy nem hiszem hogy ez túl easy dolog is lenne. Gyakorlatilag a wolfram alpha szimbolikus egyenlet rendezős és optimalizációs képességével kéne kezdeni ezt az egészet egy C nyelvre alkalmazva. Azért ez nem kicsit overkill és a franc se tudja mi lenne az eredménye ha ez menne automatizáltan egyszer valaha.
[ Szerkesztve ]
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
dabadab
titán
-
axioma
veterán
válasz pmonitor #15364 üzenetére
Hat a tc-ben a mappak porgese megmutatja, hogy ha valahol sokat tolt. Valoban, a fel mp alattiak helyett irhatna hogy bejaras, es csak hosszabb idonel hogy kereses az x mappaban vagy ilyesmi.
El vagytok a'm ti mar kenyeztetve, adj ki egy unix find parancsot aztan vagy kapsz vissza valamit ami olvashato uzenet vagy majd kiszamithatatlan ido utan a prompt visszaterese jelzi hogy nincs hiba es nincs talalat sem -
Domonkos
Ármester
válasz pmonitor #15373 üzenetére
Ha a kiiratas nem tudja blokkolni a keresest, akkor epszilon impaktja van a sebessegre nezve. Ha pedig csak "kb. itt tart a kereses" jellegel kell - tehat nem baj, ha nem minden irodik ki, akkor egy nagyon jo kompromisszum szokott lenni.
Gender of electrical connectors is defined by the pins.
-
kovisoft
őstag
válasz pmonitor #15375 üzenetére
Én örülök neki, hogy kiírja, rengetegszer vettem már hasznát. Általában lehet látni, hogy melyik könyvtárban időzik. Van, hogy az ember rájön, hogy ott nem is akart keresni, és lelövi a keresést. De arra is jó, hogy lássuk, hol jár a keresés, kb. mire számítsunk, meddig fog még tartani. Nem hiszem, hogy érdemben lassítana, nem ír ki minden egyes fájlnevet. Számomra sokkal gyűlöletesebb user interface a szimpla kerregő homokóra és társai, amikor semmi visszajelzésem nincs arról, hogy mit csinál a gép, és az várhatóan meddig fog még tartani.
-
pmonitor
aktív tag
válasz pmonitor #15378 üzenetére
Készítettem Made in Hirtelen egy teszt alkalmazást. FindFirstFile-FindeNextFile felhasználásával. Tesztelhetitek ti is. Nálam ez sokkal gyorsabb a TC-nél(pedig ez C#-ban van, a TC meg gondolom C++-ban lehet). Tehát a TC a kiírással nagyon sok időt pazarol el. Az ad-hook programomban még sok puffer van azáltal, hogy nem írja ki, hogy hol keres éppen.
De érdekes módon, ha a 2 program egyszerre fut, akkor majdnem egyszerre végeznek. Ezt nem értem, hogy miért van? Ha valaki tudja erre a választ, ő megírhatná, hogy mi lehet a magyarázat erre. A program letölthető innen. FindFirstFile.rar.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz pmonitor #15478 üzenetére
A C# kód, ami invalid értéket ad vissza Az itt található példakód alapján csináltam.
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace TestProcess
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void OpenWithStartInfo()
{
ProcessStartInfo startInfo = new ProcessStartInfo(textBox1.Text);
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);
Process pr = Process.Start(startInfo);
textBox2.Text = pr.Id.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
OpenWithStartInfo();
}
}
}@kavalkád: nem Neked szólt. A post-odat még nem láttam, amikor írtam. De kipróbáltam az első paraméterbe NULL-al, a másodikban a file-névvel. Úgy sem működik rendesen. Viszont ha Delphiben működik, akkor lehet, hogy tényleg én szúrok el valamit. Csak nem tudom, hogy mit.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
-
Livius
őstag
válasz pmonitor #15485 üzenetére
A Windows 7-ben még a klasszik számológép volt. Windows 10-ben be jött ez a metro felületes fos, ami lehet tök máshogy indul és kezelhető. Igazából ki kéne ismerni, hogy hogyan kezelhető az új kalkulátor aztán azzal is menni fog amit akarsz.
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
félisten
válasz pmonitor #15485 üzenetére
Windows 10 alatt vannak az ún. Desktop mode app-ok, meg a Tablet mode app-ok. A számológép az utóbb csoporthoz tartozik, ezért nem tudod beolvasni a PID-t a korábbi módszerrel. Legegyszerűbb megoldás az, ha futtatod a calc-ot (ami egy Calculator.exe process-ként jelenik meg a Feladatkezelőben), majd végigszaladsz az összes futó folyamaton és megkeresed ezt a bizonyos Calculator.exe-t. Abból már ki lehet olvasni a PID-t (meg sok mást is)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <tlhelp32.h>
#include <stdbool.h>
int main()
{
STARTUPINFO SI;
PROCESS_INFORMATION PI;
ZeroMemory(&SI, sizeof(SI));
SI.cb = sizeof(SI);
ZeroMemory(&PI, sizeof(PI));
if(!CreateProcess(NULL, "calc.exe", NULL, NULL, FALSE, 0, NULL, NULL, &SI, &PI))
{
printf( "CreateProcess failed... Program terminated.");
return -1;
}
WaitForSingleObject(PI.hProcess, INFINITE);
wchar_t * ProcessName = "Calculator.exe";
bool FoundProcess = false;
PROCESSENTRY32 PE32;
PE32.dwSize = sizeof(PE32);
HANDLE PS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (PS != INVALID_HANDLE_VALUE)
{
Process32First(PS, &PE32);
while (Process32Next(PS, &PE32))
{
if (strstr(PE32.szExeFile, ProcessName)!=NULL)
{
FoundProcess=true;
break;
}
}
if (FoundProcess)
{
printf( "Process Name = %s\nProcessID = %d", ProcessName, PE32.th32ProcessID);
CloseHandle(PS);
}
else
printf( "%s process not found.", ProcessName);
}
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
getch();
}[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
dqdb
nagyúr
válasz pmonitor #15488 üzenetére
Ez teljesen a futtatott alkalmazástól függ.
A legtöbb MDI és MSDI alkalmazás például úgy működik, hogy egy fő folyamat van csak, és nem ablakonként külön egy-egy. Így amikor például egy újabb Wordöt indítasz úgy, hogy az még nem futott, akkor elindul egy új folyamat. Azonban amikor ismét elindítanád úgy, hogy már fut, akkor az az új folyamat szól a már létezőnek, hogy meg kellene nyitni egy újabb dokumentumot, majd kilép.
A másik végletet a Chromium alapú böngészők képviselik, ahol egyetlen futó alkalmazáshoz X+Y folyamat tartozik, ahol X egy fix érték (jellemzően 3-4, mint UI kiszolgálása, hálózati forgalom intézése, bővítmények kiszolgálása) és Y pedig a megnyitott fülek számával és telepített bővítmények számával arányos.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
pmonitor
aktív tag
válasz pmonitor #15488 üzenetére
Egyébként még régebben nekiálltam 1 projektnek a processek terén is(lásd a képet).
De hogy ilyen bonyodalmak is lehetnek, erre nem gondoltam...
Szerk.: meg is van sztem. Az első modul fájlnévnek lesz köze a megoldáshoz.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz pmonitor #15512 üzenetére
"Error A2026 constant expected include\winextra.inc 11052"
Ezt a hibát írta ki a 11052 és a 11053 sorra a winextra.inc file-ban.
STD_ALERT struct
alrt_timestamp dd ?
alrt_eventname WCHAR [EVLEN + 1] dup (?)
alrt_servicename WCHAR [SNLEN + 1] dup (?)
STD_ALERT endsha kommentbe teszem a következő 2 sort:
alrt_eventname WCHAR [EVLEN + 1] dup (?)
alrt_servicename WCHAR [SNLEN + 1] dup (?)
akkor működik. Csak azt nem tudom, hogy ezt miért nem fogadja el. De az a lényeg, hogy működőképes lett a program. Már ez is műxik.; We access the MangaEden API and request a list of the first 25 available manga. I used a buffer size of 5000, but feel free to modify it.
; I basically learned ASM today, just felt like posting this somewhere.
.386
.model flat, stdcall
option casemap:none
; Includes
include include\windows.inc
include include\kernel32.inc
includelib lib\kernel32.lib
include include\user32.inc
includelib lib\user32.lib
include include\wininet.inc
includelib lib\wininet.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
; Initialized data
.data
AppName db "GUI App with Buttons",0
ClassName db "Class of GUI",0
ButtonClass db "button",0
ButtonText db "Kattints rám!",0
strTitle db "Cím",0
strMessage db "Hello world!",0
fhwnd dd 0
hwndButton dd 0
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.const
ButtonID equ 1
.code
start:
invoke GetModuleHandle,0
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
invoke WinMain, hInstance,0, CommandLine, SW_SHOWDEFAULT
;invoke MessageBox, 0, ADDR strMessage, ADDR strTitle, MB_OK
invoke ExitProcess, 0
;end start
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPWSTR, CmdShow:DWORD
local wc:WNDCLASSEX
;local fhwnd:HWND
local msg:MSG
mov wc.cbSize, SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, offset WndProc
mov wc.hbrBackground, COLOR_BTNFACE+1
push hInst
pop wc.hInstance
mov wc.lpszMenuName,0
mov wc.lpszClassName, offset ClassName
invoke LoadIcon, 0, IDI_APPLICATION
mov wc.hIcon, eax
mov wc.hIconSm, eax
invoke LoadCursor, 0, IDC_ARROW
mov wc.hCursor, eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx, 0, \
addr ClassName, \
addr AppName, \
WS_OVERLAPPEDWINDOW, \
CW_USEDEFAULT, \
CW_USEDEFAULT, \
500, \
500, \
0, \
0, \
hInst, \
0
mov fhwnd, eax
invoke ShowWindow, fhwnd, CmdShow
invoke UpdateWindow, fhwnd
.While 1
invoke GetMessage, addr msg, 0, 0, 0
.BREAK .IF (!eax)
invoke TranslateMessage, addr msg
invoke DispatchMessage, addr msg
.ENDW
mov eax, msg.wParam
RET
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_DESTROY
invoke PostQuitMessage, 0
.elseif uMsg==WM_CREATE
invoke CreateWindowEx, 0, addr ButtonClass, addr ButtonText, \
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, \
170, 100, 140, 25, hWnd, ButtonID, hInstance, 0
mov hwndButton, eax
.elseif uMsg==WM_COMMAND
mov eax, wParam
shr eax, 16
.if eax==BN_CLICKED
mov eax, lParam
.if eax==hwndButton
invoke MessageBox, 0, ADDR strMessage, ADDR strTitle, MB_OK
.endif
.endif
.else
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.endif
xor eax, eax
RET
WndProc endp
end starthttp://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz pmonitor #15559 üzenetére
Ezen az oldalon elkészítettem a permutációk, kombinációk és a variációk kódjait/tesztjeit is. Aki tud valamelyiknél hatékonyabb kódot(vagy algoritmusra mutató linket), őt kérem, hogy ossza meg velünk.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
K1nG HuNp
őstag
válasz pmonitor #15582 üzenetére
senki sem fogja az i, j, k valtozonevekkel ellatott kododat ordo csekkolni hogy van e erre jobb megoldas, de roviden, igen, mindig van egy robosztus, teljesen tesztelt open source lib ami ezt es tobbet is tud jobban
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
kovisoft
őstag
válasz pmonitor #15582 üzenetére
Még régebben írtam egy rövid függvényt, ami kiírja a N szám permutációit rendezett formában. Most sehol sem találom, de emlékeim alapján megpróbáltam újra lekódolni C-ben:
int a[50];
int n=5;
int i, j, temp;
// az 1 2 3 ... n sorozatbol indulunk ki
for (i=0; i<n; i++)
a[i] = i+1;
for (;;)
{
// kiirjuk az aktualis permutaciot
for (i=0; i<n; i++)
printf("%d ", a[i]);
printf("\n");
// megkeressuk, hol kezdodik az utolso monoton csokkeno reszsorozat
for (i=n-2; i>=0 && a[i]>a[i+1]; i--);
// ha a teljes sorozat monoton csokkeno, akkor vegeztunk
if (i < 0)
break;
// a csokkeno reszsorozat elotti elemet ki kell cserelnunk a reszsorozatban nagysag szerint rakovetkezovel
for (j=n-1; a[j]<a[i]; j--);
temp=a[i]; a[i]=a[j]; a[j]=temp;
// tovabbra is monoton csokkeno a reszsorozatunk, forditsuk meg, hogy monoton novekedo legyen
for (j=i+1; j<n+i-j; j++)
{
temp=a[j]; a[j]=a[n+i-j]; a[n+i-j]=temp;
}
}Nem teszteltem a sebességét, nem állítom, hogy ez a létező leggyorsabb módszer, de viszonylag rövid és egyszerű. Egyébként most, hogy jobban megnézem, ez majdnem az a módszer, mint amiben a quicksort van. Az igazat megvallva soha nem értettem, hogy miért kell itt meghívni egy quicksortot, hiszen amikor ide érünk, akkor a sorozat vége már rendezve van, csak éppen csökkenő sorrendben, tehát elég szimplán megfordítani.
[ Szerkesztve ]
-
axioma
veterán
válasz pmonitor #15582 üzenetére
En egy dolgot megneztem benne: mar amikor nekem tanitottak a "tiszta" rendezesi algoritmusokat, akkor mondtak hogy a valosagban nem ilyet hasznalnak (letezo library-k), hanem egy kevert algot: ha a hossz ma'r <=5, akkor a rekurziv hivas koltsege tobb, mint az nlogn es n^2 kozotti kulonbseg, ezert azokat a darabokat egy sima buborekkal/kivalasztasossal vagy barmi ilyesmivel lerendezik, es csak felette jon a felezes. Ha szeretsz ilyenekkel jatszani, probald ki. Azota lehet hogy van tobb mas trukk is.
Amugy a mar leglevo algoritmusoknal celhoz kototten tudsz jobb algoritmust irni (felteve ha nem annyira altalanos hogy van ra lib ), vagyis ha barmi tobbet tudsz az adataidrol. Peldaul ha csupa 1000 es 10000 kozotti szamok 10ezres nagysagrendben (adatbazisban amcsi iranyitoszamok volt a pelda, az me'g egy kb. 80-as evekben irt konyvben), akkor jobban jarsz ha egy masik tombben megszamolod melyikbol mennyi van/bevodrozod hogy hol (indexek), es utana vegigfutsz rajta vissza-flatten-elni, igy van linearis megoldas. -
Ispy
veterán
-
Livius
őstag
válasz pmonitor #15587 üzenetére
Javaslom kezdj el dolgozni valami szoftveres multicégénél, és akkor egyből rájössz, hogy ha tegnapra kell valamit megcsinálni, akkor manapság az már nem fér bele, hogy C-ben Win32 API-val mindent a legalacsonyabb szinten csináljunk meg 4 év fejlesztés alatt, amikor ugyan az sokkal átláthatóbb kódolással, 3 hónap alatt kész van C# WPF-ben egy Windows 10 cél platformra fejlesztve. És itt most egy korszerű sok-sok magot kihasználó multiprocessinges progira gondolj GUI-val és mindennel, ne a command line szintű használhatatlan user-interfaces DOS korszakos programra.
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
martonx
veterán
válasz pmonitor #15587 üzenetére
Hm, most jól értem, hogy ez a C# játékszer, és a C mennyire hasít, ezen bődületes nagy eltérések alapján lett kijelentve?
C# C
n=13 23s 14s
n=15 330s 200sAkkor mondanám, hogy a C#-hoz képest a C hasít, és rohanjunk minél több, mindent C-be átrakni, ha tizedannyi idők alatt végezne.
Egyébként az is kérdéses, hogy a C#-ot mennyire mesterien optimalizáltad, minden struct és span<T>-e benne, meg ilyesmik.
A fentiekkel nem azt akarom bizonygatni, hogy a managed kód nem lassabb, mint egy natív kód, mert az butaság lenne, csak arra akartam rávilágítani, hogy a talán helyes eredményeidből, levont következtetésed helytelen: "C# játékszer a C-hez képest".Én kérek elnézést!
-
Ispy
veterán
válasz pmonitor #15594 üzenetére
Szerintem az egész melyik az igazi meg nem felvetésed egy baromság, mindegyiknek van előnye meg hátránya, a megfelelő feladathoz a megfelelő nyelvet kell választani. Persze más ha az ember csak programozgat, meg más amikor a munkájától függ sok-sok másik cég, ember munkája. Meg persze pénzt is kéne vele keresni, ami kb. azt jelenti, hogy a lehető leggyorsabban tud a legjobb minőséget előállítani, az hogy a user a gép előtt 2 mp-et vár valamire vagy 10-et az nem igazán szempont.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
kovisoft
őstag
válasz pmonitor #15586 üzenetére
Említetted az ismétléses permutációt, az előző kódomat egy kis módosítással alkalmassá tehetjük ezeknek az előállítására is. Csupán ki kell cserélni a < és > jeleket <= ill. >=-re, hogy a megegyező elemeket is átugorják a ciklusok. Valamint a tömb inicializálásakor fel kell sorolni ismétlésekkel együtt növekvő sorrendben az elemeket (ha mindegyik elem különböző, akkor visszakapjuk az ismétlés nélküli permutációt). Valahogy így:
int a[] = {1,1,2,2,2,3};
int n=6;
...
// megkeressuk, hol kezdodik az utolso monoton csokkeno reszsorozat
for (i=n-2; i>=0 && a[i]>=a[i+1]; i--);
...
// a csokkeno reszsorozat elotti elemet ki kell cserelnunk a reszsorozatban nagysag szerint rakovetkezovel
for (j=n-1; a[j]<=a[i]; j--);
...Ennek a sebességét sem teszteltem, nem tudom, hogyan viszonyul más módszerekhez.
-
Livius
őstag
válasz pmonitor #15594 üzenetére
Jelenleg az igazi programozók ilyeneket használnak kb (nálunk legalábbis ez ami kell multicégnél): C#, C++, python, Matlab (C-ét pedig defaultból mindenki tudja, de nem ez a fő nyelv, ami kell)
C#-ban igen, tudsz használni C-és dll-t, de javaslom ezen a koncepciódon még alakíthatnál. Azzal, hogy Te magadnak írsz egy C dll-elt és 200 ms-vel lettél gyorsabb a C# eredeti MS-es megoldásához képest azt még igencsak a hajadra kenheted.
Ha még ezen a vonalon akarsz csiszolni, hogy a matematikai eljárások a lehető leggyorsabbak legyenek, úgy hogy adott esetben a C#-ból egy külsös nem .Net-es dll-ből egy sokkal gyorsabb implementációt használsz, akkor ajánlom figyelmedbe a BLAS és LAPACK szintű átportolását az Intel-nek, Intel oneAPI Math Kernel Library.
Előfordulhat hogy ez csak az Inteles gépeken fog működni, kb csak a Core 2 Duo és annál újabb CPU-kon, de jelenleg ennél optimálisabb numerikus lib nincs C/C++-ban szerintem (párhuzamosított vektor/mátrix művelteket alapból tudja), amit egy C# alatt tetszőlegesen használhatnál is.Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
pmonitor
aktív tag
válasz pmonitor #15600 üzenetére
Elkészítettem az ismétléses permutációval megvalósított Cutter kódját C-ben. Ez 3 sec-en belül végez a kódba égetett feladattal. Akit érdekel, itt megtalálja.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! Dell Latitude 5580 - i5-G6 I 8-16GB I 256 SSD I 15,6" FHD I HDMI I CAM I W10 I Garancia
- Bomba ár! Dell Latitude 5490 Touch - i5-8G I 8GB I 256SSD I 14" FHD Touch I Cam I W11 I Garancia!