- Nem növel telepméretet a Galaxy S26 Ultra
- iPhone topik
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- One mobilszolgáltatások
- Samsung Galaxy S23 Ultra - non plus ultra
- Milyen okostelefont vegyek?
- Yettel topik
- Vivo X200 Pro - a kétszázát!
- MIUI / HyperOS topik
Új hozzászólás Aktív témák
-
Froclee
őstag
Hogyan mérted? Debugger attacholva van? Function előtt és után DateTime? (Stopwatch-al kell.) Egyébként a JIT-től is lehet szóval érdemes loopban futtatni kb 20szor.
-
Keem1
veterán
Lehet, én voltam a hülye
A második táblára rátettem egy PK-t, így 30 ms ugyanaz a lekérdezés.
Hiába, nem sikerült tökéletesen importálni MySQL-ből néhány táblát. Ezen még dolgoznom kell.Ettől függetlenül azért érdekes, hogy a DB Browsernek simán ötöde volt így is. Most 40-50 ms, az én appomban pedig 30-40 ms a lekérdezés.
A MySQL megmaradt 100 körül, de ott alapból megvolt a PK, az csak a MySQL->SQLite importkor mászott le. -
Keem1
veterán
Szerintetek mitől van az, hogy egy SQLite lekérés ugyanazzal a queryvel C# appban sokkal lassabb, mint egy adatbáziskezelőben (DB Browser for SQLite 3.10.1)?
Az SQL valami ilyesmi:
SELECT T1.field1, T2.field2, T3.field3 FROM table1 T1 LEFT JOIN table2 T2... WHERE ... LIMIT 10
DB Browser: 4 rows returned in 237ms
C# console app: Kész! 00:00:01.29
MySQL (phpMyAdmin, böngészőben): Sorok megjelenítése 0 - 3 (4 Összesen, A lekérés lefutott 0.1508 másodperc alatt)Azért az is durva, hogy a MySQL böngészőben, másik gépről kevesebb mint fele idő alatt lefutott (150 ms), mint az aprócska, és helyben lévő SQLite (237 ms). Kezdek kiábrándulni a helyben tárolt adatokhoz használandó SQLite-ból.
-
Szia! Én ugyan úgy junior JAVA-ról junior C#-ra váltottam, szerintem relatív "egyszerű", könnyebb mint fordítva vagy mint Cpp-re váltani.
Reiter könyv szerintem nem egy nagy durranás, Andrew Troelse - C# 2008 és a .NET 3.5 könyve sokkal-sokkal jobb. Nem kell feltétlen az egészet elolvasni, igen vaskos darab.
-
Orionk
senior tag
Sziasztok!
JAva-ban fejlesztettem eddig.
Első munkahelyemre most mégis junior C# fejlesztőnek vettek fel, mert az interjún a C# -nak a Java "megfelelőit" tudtam.Mit gondoltok egy ilyen váltásról?
Illetve ezt a könyvet jónak tartjátok arra, hogy kezdetben ebből zárkózzak fel?
köszi
-
joysefke
veterán
válasz
joysefke #7939 üzenetére
Ez float.Parse(string) helyett
bool float.TryParse(string, out float)
-tal van.A kettő között a különbség az, hogy a TryParse akkor sem dob exception-t ha nem sikerült a parzolás, ehelyett a sikert a TryParse(...) fgv. a visszatérési értékével jelzi. Csak akkor, ha ha mindkét számot egyszerre sikerült parzolni lesz a success változó értéke true, ekkor tudja a vezérlés elhagyni az adatbeolvasó do-while ciklust.
-
joysefke
veterán
using System;
class Program
{
static void Main(string[] args)
{
bool succes = false;
float num1 = 0;
float num2 = 0;
do
{
Console.WriteLine("Kérem az összeadni kívánt számokat.");
Console.Write("Egyik szám: ");
string a = Console.ReadLine();
Console.Write("Másik szám: ");
string b = Console.ReadLine();
succes = float.TryParse(a, out num1) && float.TryParse(b, out num2);
if (!succes)
{
Console.WriteLine("");
Console.WriteLine("Nem számot adtál meg!");
}
}
while (succes != true);
float osszeg = num1 + num2;
Console.CursorVisible = false;
Console.WriteLine("A két szám összege= " + osszeg);
}
} -
Pörp
senior tag
válasz
joysefke #7927 üzenetére
Megcsináltam, köszönöm a segítséget. A másik módszerrel hogy nézne ki?
Köszönöm mindenkinek!using System;
class Program
{
static void Main(string[] args)
{
bool succes = false;
float num1=0;
float num2=0;
do
{
Console.WriteLine("Kérem az összeadni kívánt számokat.");
Console.Write("Egyik szám: ");
string a = Console.ReadLine();
Console.Write("Másik szám: ");
string b = Console.ReadLine();
try
{
num1 = float.Parse(a);
num2 = float.Parse(b);
succes = true;
float osszeg = num1 + num2;
Console.CursorVisible = false;
Console.WriteLine("A két szám összege= " +osszeg);
}
catch (Exception ex)
{
Console.WriteLine("");
Console.WriteLine("Nem számot adtál meg!");
}
}
while (succes != true);
}
} -
Jester01
veterán
válasz
Froclee #7936 üzenetére
Még az is kiderülhet, hogy nem is olyan bad practice amíg az exception a kivételes esetre vonatkozik. Például a fentebb említett, "sok számot fájlból betöltök" az valószínűleg gyorsabb lesz az exception változatban, feltéve, hogy a számok jórészt helyes formátumban vannak. A normál végrehajtási irány ugyanis úgy lesz a leggyorsabb.
-
Froclee
őstag
válasz
joysefke #7933 üzenetére
tényleg jó a bad practice bemutatására.
(no offense)
kis olvasmány -
Peter Kiss
őstag
Egy apróságot hozzátennék, ha a kérdező a Convert class-t használta: Convert.ToInt32() returns 0 when argument is null.
Az, hogy mikor mennyire fáj egy exception, kérdezd meg a processzorod L2 cache-étől.
Nyilván ebben a példában hótmindegy, nem is ez a kérdés, de mondjuk egy trading alkalmazással ahol a latency hiphop átszámolódik komoly $$$-ká, ott már nem mindegy. -
joysefke
veterán
A válaszom tökéletesen helytálló illetve egyből működés közben mutatja be a dolgot, copy-pésztezhetően. ÉS mint följebb írtam vagy a fölötte levő hsz a TryParse(..) -val, vagy az int.Parse(..). Konzolon userre várva sosem fog számítani, ha pedig streamből jön az adat, akkor már nem az lesz a kérdés, hogy milyen metódussal lehet string->int parseolni.
-
-
joysefke
veterán
Az előző hsz, vagy ez, int.Parse(string)-gel, de itt manuálisan kell elkapni az exceptiont
a
bool success
változó tárolja, hogy sikeres volt-e a beolvasás, ado-while
ciklus addig fog próbálkozni a beolvasással, míg az egyszer sikeres nem lesz. A string -> int átalakítást azint.Parse(string)
végzi, ha ez sikeres volt (mert a user tényleg számot adott be), akkor a következő végrehajtott utasítás a success = true; lesz. Ellenkező esetben létrejön egy exception és a végrehajtás acatch(Exception) {...}
blokkban folytatódik anélkül, hogy a success változót átállítottuk volna, ebben az esetben a do-while ciklus újra lefut.class Program
{
static void Main(string[] args)
{
int num=0;
bool success = false;
do
{
Console.Write("Enter number : ");
string str = Console.ReadLine();
try
{
num = int.Parse(str);
success = true;
}
catch (Exception ex)
{
Console.WriteLine("Not a valid number, try again!");
}
} while (success != true);
Console.WriteLine($"You typed in the following number: {num}");
}
} -
Jester01
veterán
Int32.TryParse
vagy elkapod az exceptiont. -
Pörp
senior tag
Sziasztok!
Abszolút kezdő vagyok, a billentyűzetről várok egy leütött számot, egy int változóhoz.
Addig megvan, hogy int a = Convert.ToInt32(Console.ReadLine());
A gondom az, hogy ha nem számot, hanem betűt vagy stringet ütök be, akkor kifagy. Hogy lehet eldönteni, hogy a billentyűzetről beadott karakterek azok int vagy string? -
kobe24
tag
Sziasztok!
Remélem valaki tud segíteni a problémámon. Egy wpf-es alkalmazást készítek éppen, és van egy olyan része amikor vonalkódot kellene leolvasni és az alapján adatokat betölteni. Viszont a kérés az az, hogy ne kelljen mindig az input mezőbe belekattintani és úgy leolvasni a vonalkódot. Erre találtam egy megoldást a neten amit ezen a linken meg is tudtok nézni. Nagyon jól működik, ha a billentyűzeten ütök be bámifél adatot. Még egy androidos alkalmazást is letöltöttem ami elviekben a vonalkód olvasást szimulálja, és wifin keresztül küldi az adatot a gépnek. Viszont amikor már egy tényleges vonalkód olvasóval próbáltam akkor olyan billentyűleütéseket érzékelt az alkalmazás mint LeftAlt vagy a numpad1-9-ig. Ha rendesen egy jegyzettömbe vagy valamilyen input mezőbe szkenneltem az olvasóval akkor tényleg a vonalkód számát küldte el, úgyhogy nem az olvasóval van gond. Viszont nem igazán értem hogy az alkalmazásom miért vesz hibás adatokat. Esetleg ha a fenti dologra valakinek valami másfajta megoldása lenne azt is szívesen fogadnám. Köszönöm előre is a segítségeteket.
-
Gódor M.
újonc
Sziasztok! Azt hogyan lehet megoldani, hogy a vektor elemeihez adatokat is rendelek? Pl: A vektor (vagy mátrix) elemei városok, és mindegyikhez hozzárendelem az átlaghőmérsékletet, meg az évi csapadékmennyiséget.
A válaszokat előre is köszi!
-
"Szóval téged nem az érdekel, ha egy HttpPost-os action meghívódik, hanem az hogy kód szinten hány metódus van felannotálva (szép szó) a HttpPost attribútummal?"
Pontosan
Az Application_Start-ot nem akarom teleszemetelni, viszont van benne regisztrálva egy FilterProviderem, abban akarom kigyűjteni ezeket a httppost metódusokat.
Magáról a metódusról meg tudom állapítani, hogy van-e rajta httppost attributum, olyat már csináltam korábban:
bool hasHttpPostAttr = (actionDescriptor.GetCustomAttributes(typeof(HttpPostAttribute), true)).Any();
Köszi mindkettőtöknek, utána nézek a fentebbi linkeknek...
-
j0k3r!
őstag
Szóval téged nem az érdekel, ha egy HttpPost-os action meghívódik, hanem az hogy kód szinten hány metódus van felannotálva (szép szó) a HttpPost attribútummal? Ez esetben én reflection-t használnék az Application_Start-ban. Kezdve a web alkalmazásod(assembly) összes osztályával, ami a System.Web.Mvc.Controller-ből származik, majd ezek publikus nem statikus metódusain ilyesmit nézni.
mod: ha nagyon elakadsz vele, akkor délután megírom ezt a pár sort
-
j0k3r!
őstag
-
Sziasztok! ASP MVC alkalmazásomban van egy custom
IFilterProvider
implementációm. Szeretnék actor
-ban végigmenni az összes alkalmazásban fellelhetőAction
-on, hogy ki tudjam gyűjteni aHTTPPOST
attribútummal rendelkezőket.Nyilván az
IFIlterProvider
által biztosítottGetFilters(ControllerContext controller, ActionDescriptor action)
függvényen keresztül megy a dolog egyszerűen, de én az előtt szeretném ezt tudni, mielőtt ez a fv. meghívásra kerül. -
Goose-T
veterán
Miért nem deszerializálod streamből parseolás helyett? Ezerszer egyszerűbb és gyorsabb lenne, ráadásul memórialimit sem lenne. Csinálsz egy osztályt, feldekorálod XML attribútumokkal, oszt jóvan. Kiindulópontnak ez jó lehet.
-
Keem1
veterán
-
Keem1
veterán
válasz
Froclee #7906 üzenetére
Valóban érzékeny adat, így csináltam egy lecsupaszított verziót
Az alapötlet onnan származik, hogy az eddigi DOM parsert akarom átírni, mivel adott esetben több száz, vagy akár GB-on felüli XML is létezik, így a ram telítődés (és a swappolás) hátrányai rögtön jelentkeznek. Ez az előbb 26 másodperc alatt szaladt végig egy kicsit több, mint 1 GB-os példányon, csak épp működésre bírni nem tudom.Köszönöm a segítséged!
Basszus!
Szerintem rájöttem a hibára!travel_data[id].Add(xmlReader.Value);
HELYETT:travel_data[id].Add((XNode.ReadFrom(xmlReader) as XElement).Value);
Lassan kiderül, hogy én bizony csak egy kontár vagyok...
-
Froclee
őstag
-
Keem1
veterán
Srácok, mit rontok el?
KódA
Dictionary<string, List<string>> travel_data = new Dictionary<string, List<string>>();
id-ját (string) ki tudom íratni, de aList<string>
elemeit már nem.Egyébként létezik olyan univerzális dump, ami a paraméter változó, objektum, stb. adatait strukturáltan kiírja, mint pl. php-ban a
print_r()
? Ilyen esetben nagy segítség lenne, hogy ténylegesen mi van az adott változóban.Ez a kimenet (az adat résznél (belső foreach) üres sorok):
Nyomjunk egy billentyűt a kezdéshez!
Beolvasandó fájl: TOROKORSZAG39.xml
=== Kész! 00:00:01.11 ===
YS4257=====
TMLMB4259=====
ADWP4282=====
SLR4284=====
TBRH4293=====
-
-
joysefke
veterán
válasz
Peter Kiss #7900 üzenetére
Ha az nem is jó neked, akkor pl. én nem használnék Color-t, mert az kicsit túl nagy, helyette egy int is megteszi vagy egy kisebb saját típus.
Te jó ég, most megnéztem
Console.WriteLine(Marshal.SizeOf(new Color ())); -----> Ez 24-et ír ki a konzolra
Jól értelmezem, Color objektumonként 24 Byte + a tömb overheadje a memóriafoglalás???
Ez 13Mpx-nél (az egy átlagos kép) 13*24*E6 = 312MB+overhead...
Én meg annyira meg voltam győződve róla, hogy ez a Color objektum csak az RGBA értékeket tárolja 4byte-ban, és az a sok property amin keresztül ezt-azt le lehet kérdezni az is csak az RGBA értékeket kérdezgeti le/állítja be...
-
joysefke
veterán
Saját szórakozásra implementálok egy Seam Carving algoritmust. Az algoritmus meg körülötte egy WPF ablak már kész van, prototípus szinten szépen működik (egyelőre full fapad, de müxik).
Én is tegnap jöttem rá -világított rá valaki redditen-, hogy a Color az sokat foglal, mindjárt meg is nézem mennyit. Eddig szembe sem jutott, hogy a Color az nem 4 byte (8+8+8+8 = A+R+G+B).
A szükségesnél magasabb memóriafoglalás egyelőre nem zavar, egy 13mpx-es kép esetén az applikáció teljes memóriafogyasztás "csak" 500-550mb. A sebesség viszont sokkal gázabb. Parallel.For(), taskok és nem managelt mem hozzáférés segítségével már volt némi gyorsulás
Na mind majd visszajövök
Athlon64:
A kép kirajzolása másodlagos, kétszer kell kirajzolni: miután betöltötte a képet, illetve miután lefutott az algoritmus a módosított képet.Ha lesz időm töltök fel konkrét kódrészleteket, hogy lássuk mit lehetne hatékonyabbá tenni. Lenne mit
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- ÁRGARANCIA!Épített KomPhone i3 10105F 8/16/32GB RAM RX 6500 XT 4GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Prémium vizhűtéses számítógép! I9 11900K / RTX 3090 / 64GB DDR4 / 1TB SSD
- Menő retró konfig: Q9550, Gigabyte P43, 4GB RAM, ASUS GT730,
- Azonnali készpénzes AMD CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- Creative Sound BlasterX G5 (70SB170000000) (Sound Blaster) (DAC)
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest