Jump to content

DelphiUdIT

Members
  • Content Count

    611
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by DelphiUdIT

  1. DelphiUdIT

    Continuity solution of the Default font Sydnye vs. Athens

    Good question. I don't know if is possible ... the defaults should be written by desgin packages ... , but the first thing that I think is to change the default font of TApplication at the start of program , so at runtime time every components that have the "ParentFont" property at true still had that font. But this is only a temporary adaption: when you'll edit the form, I think the all components will change cause new default font. May be some regsiter hack from a dummy design package can help .... (like Register(TForm, MyNewDefaultForm)) ... but I don't know if it's possible and how to do that.
  2. DelphiUdIT

    migrating projects to RAD Studio 12

    You can run with debugger and see what's the cause ...
  3. DelphiUdIT

    Implementing "desktops" using MDI, "broken" in D12

    I used to loose Form states (or better don't care about them anymore) every time it is closed or hidden. These because all the states of the Form (like input datas, charts, state of the controls) will be resumed from a structure (typ. record or advanced record) when the Form is "reshow". Normally I "deep divide" all data values from graphic controls and save them to records, since these values may be (normally ARE) used and modified by other means. Only when I have DBAware controls I normally maintain the state of the Form (never destroy it or resume data when the Show methods are called).
  4. DelphiUdIT

    Implementing "desktops" using MDI, "broken" in D12

    Insert in every child forms this line in the OnCLose Event may be resolve the Issue ? procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caHide; end;
  5. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    I partially agree with you: measuring (always my experience on software and system that I have done, and view competitors's solutions) the performance (timing based) seems that HT in my case is better. I used with the same twins systems HT and not HT (with Alder Lake) and with HT I gain form 15% to 20% of better performance (timing lowered from 150 ms. to 120 ms. with HT). Of course it is my case, and my be should be better "thinks" for not HT. Ahhh .... the tempearture were lowered from 85/90 C to 80/85 C. There is a scope about that ... an application (or better a system) should (MUST) achieve the "GOAL" ... the price and the techs. go in second plane (of course ALL should be OK, techs, economy, profit, ect ...). Like I told there is no notation about that CORES will be put in deep sleep when are working. If they are not in use they will be put in deep sleep. But if you do some tests you will notice that is not sense to move some works from one CORE to another and go to sleep the first CORE. Unitll there is a lot of power to use, of course this will do (masks from ITD). After that you will not see anything, the CORES works until they should. In normal Windows state, without any user appliocation (I mean application that USER LAUNCH, not application that system launch). you will see that the Processor use only one or two THREADS (ONE P-CORE) for all the threads in use, and some E-CORES (one or two). The P-CORE in used is called "preferred" and it (they ... 2 THREADS ... with HT) run at full freq. (in my case 5.8 GHz) ... so YES some CORES are in deep sleep and all threads run in one or two cores, but THIS is for performance ... all the threads occupy only 25% the capacity of the single core and so the performance of the core is still at OPTIMUM level, If YOU overload one CORE, what is the sense to "move in" some other task to free another CORE and put to it in deep sleep ? The ITD resolve this for you, dynamically balancing the load. That is the news. And if you are not happy about this, you can affort the use of "Affinity Mask", like I did in the past. All other CORES except the "preferred" are normally "parking". To use the full power I should do a lot of works (32 software Threads that run without sleeping or waiting). The frequency is still high. Only the power is at max value, throttling the frequency. I think is enough to works at the best conditions. Throttle the single frequency of every CORE is better ? Uhmm I' dont' know but I don't think that is right way. But we'll see in the future.
  6. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    Those are two example about "power" state: the first image is on PL2 (Turbo) Intel processor state, the second is the "heavy load" normal state (PL1). Of course those are from my system. This is a very simple views, other more extensive talks should be done, but I don't think it is the scope of this forum.
  7. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    In the new(*) Intel architecture (Hybrid like Alder Lake and Raptor Lake), the cores work in different way: the P-Core are for performance with Hyperthreading and high frequencies, the E-core are for efficiency without Hyperthreading and with lower peak frequencies then P-Core. The ITD now makes a good work, and of course if you use more tthreads than the CPU "virtual cores = P-Core*2 +E-Core" the performance is lower (I mean the timing that a simple task do is greater) . If you coordinates yours tthread, you can increase the performance a lot: for example using the "WaitFor...." or a simple "Sleep(x)". Now, in my applications I don't have any tthread that "run" as empty ... all of them are in waiting state. This boost the performance and reduce the heat produced. Some developers are used to create and destroy the tthread every time that they should run, but this of course depends on you works. Take care that some complex AVX2 instructions have terrible times with e-cores and that same AVX2 instructions (not all have the same impacts) used the full resource of one physical core. If Hyperthreading is in use, and for some reasons two Threads of the same Core use AVX2 instructions ... there will be a degradation of performance. I do extensive use of AVX2 instructions (with external libs) and with some of them I should lock the execution (affinity) in different physical cores (or sometimes use a semaphore to execute one or the other). I get AVX2 info from my tests with various hardware, so this is not a "bibble". And I repeat myself, the ITD does a good work now, and may be what I write is not relevant anymore. This is not true (often). Depends about your needs. There are many factors to anayze about that. Like I wrote before, you can run many more threads using some tech. and gain full performance. Take your mind about the power and that the most common factors that slow down the execution are: - the imposed power limit (TDP) which can vary based on various factors (PL1, PL2, PL4 processor states); - processor temperature (individual cores and packages). Do not forget that, unless you use "-F" series processors or external cards, the graphics chipset also produces heat and therefore intensive use of graphics (such as at gaming level) produces heat in the chip. (*) This is a not a new anymore ... the "Arrow Lake" arch. is another baby from Intel ... P.S.: I spoke about Windows platform and 64 bit applications.
  8. I can confirm that those duplications occur to me from very long time. But since they occurs only in the standard tab and they don't have any impacts for me ... I've gotten used to it now and I don't pay attention to it anymore.
  9. DelphiUdIT

    Updated Webhelp for GExperts available

    OT All the files downloaded from iInternet are "blocked", this means that some features of the file cannot works. To unblock them use what @dummzeuch said. Other method is run a powershell script: UnBlock-File Ref.: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/unblock-file?view=powershell-7.4 I use this to remove all block signs in every file of the present directory and sub folders (form PowerShell command): dir .\ -Recurse -Force | Unblock-File
  10. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    I don't know about AMD CPU (they may use other tech. to assume protection and / or high performance), but with INTEL (new versions, I think from 11 Gen) there is a ITD (Intel Threads DIrector) that organize the load of the full CPU: he distribute dynamically all the threads around all CPU, and he can use E-Core or not depends from the "performance level", state of the single core (frequency, load) and other factors. Is not true that all cores works at the same speed (with Intel). And this is the first things about the fact the is not necessary (and repeat is a not sense) to put one of them in one of their sleep state. The cores can go down to 700 MHz (may be, I'm not sure about this frequency) and less the 1 Watts power use (all cores). It's not necessary move all works in less COREs to maintain performance and protection. The force of the slepp state of the cores that is working is not "writing" in none of the technical ooks of Intel. Of course, like I said before, load balancing is done by ITD, and is possible that, if one part of you application go in a WAITFORxxx, a Sleep(yyy) or other situations, the IDT move this code in other CORE and sò free one or more cores. But this is a dynamic about load balancing, not about protection. Refer to much toushand pages of Intel: "743844_011-13th, 14th Generation Intel Core Processor Family - Vol 1", "248966-Optimization-Reference-Manual-V1-050", "Game Dev Guide for 12th Gen Intel Core Processor Hybrid Architecture", "325462-sdm-vol-1-2abcd-3abcd-4". There is not issues about use of E cores, P cores or mixed: an application can set by self the setting about core use true affinity mask. I use that to assure that all power go to my "piece" of application that need that and that some other parts use the e-cores. EDIT: P.S.: I tried in the last month to use only ITD (so without use of affinity mask), and the analisys seems tha ITD works better. The same test, that I did some years ago, was not so positive.
  11. DelphiUdIT

    Delphi 12.2 Patch 1

    Lol, without any warning this patch suddenly appeared...
  12. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    I forgot about this: in my personal experience, the best settings for applications (not games) is "balanced". This is based on experience in industrial systems (and in my daily work) where temperature, woking load and peformance should be mixed and should provide consistent performance. With "high performance settings", in the past and I never tried again, I had many issues with variable performance (most of them due to Throttle and temperature). If you force "high performance", the system cannot modulate the use of the resources. Most of the time I had "peaks of lock with downgrade timing" or high temperature recording, with my daily working PC too. Of course, this is my experience, and I'm sure that someone's experience is different.
  13. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    You are right, and more others like not optimize code ..... But I think he's just looking at appearances. If before he used old generation CPUs, now the new ones (hybrid) are abyss away in terms of real processing power. One of my applications on an "I7 9700 DDR4" used 75% of CPU and the times "measured" were near 190 ms (no Throttle). The exact same one on an "I7 12700 DDR4" system uses 45% of CPU and the times are near 110 ms. So there is a performance drop ... well I would say no.
  14. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    You are really confident about CoPilot or others AI ? Try to reflect about the situation: 1) I use 10 COREs at 50%, and the CPU go to 95 degrees: the system power down one (or more) core ???? WHYYYYY ???? The logics about the "deep sleep" of the core is about energy saving, not protections, so if the cores are not used they are "sleeped". For the protections the Throttle and other factors (like cores voltage and others) are in "game". That is what I know, and I'm ready to change my mind if an HUMAN give me usefull informations, not an AI. Really, don't take the AI like a GOD. Look here (I try by myself an example from this forum):
  15. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    Like @Anders Melander said, the Task Manager is not the right instrument to measure the performance of your application. One of the simple way is to measure the time the your software needs to do some tasks. Compare with old systems (if you can) or analyze with the datas that you histrical have. If you really use a bunch of threads you are not able to "consume" all processor power. You can measure performance datas with "profilers" or simply usingn "time base view" with TStopWatch (from System.Diagnostics) for primitive analyses.
  16. DelphiUdIT

    Can't get but 40% CPU usage multi-tasking

    First of all, the CPU % in task manager is about all threads (I mean cores with hypert. and not). If you use only some cores (and the decision is made by the ITD) the CPU usage never go to 100%. I can assure you that you can reach the full power of you processor. In my applications I stay form 50% to 90% of CPU usage using all possible Corse, but I use in my apps more then 30 TThreads.
  17. DelphiUdIT

    Touch Dynamic Fusion Hybrid Tablets

    In the past I used to compile app with ARM (I think V7 32 bit, but not sure) with Delphi and run in a Tablet with Intel processor ATOM 64 bit (like Asus ZENPAD 8"). I really don't know the procedure. I remember that I have to delete some so files ... Sure he can help: @Dave Nottage
  18. DelphiUdIT

    Simole threads providing progress info

    OOps ... sorry I didn't note that ... except "Queue" than he can use "Synchronize" (is not async), the others things should working.
  19. May be you can have found the right way ... (BDSINCLUDE)\windows\vcl is already included in the standard global path of C++. But I have to modified the "All Configuration" settings in the options .... THAT WORKS ... GREAT. EDIT: If you cannot enter in the QC portal I will report that with your refer (this topic) ....
  20. DelphiUdIT

    Simole threads providing progress info

    I always used TThread, the object include in the standard lib with Delphi. With that you can do everything. Use "Queue" method to interact with VCL components. Ref: https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TThread If you have time, explore the use of WaitForxxx with events in Threads ... they can help a lot your works. Of course the other libraries can help to do specific works and can extend the functionality of the Thread.
  21. DelphiUdIT

    ICS SSL under Linux x64

    You can fork the project and mantain your version, after that you may propose a merge. When they have time surely they will do that. I maintain my version of Indy for example, 'cause their (... his ...) time and priority are not the same as mines.
  22. DelphiUdIT

    Delphi 12.2 Patch 1

    They are signed that like FIXED in Rad Studio 12.2 PATCH 1.
  23. There are an open issue (an not only one) about that: https://embt.atlassian.net/servicedesk/customer/portal/1/RSS-2144 Seems that the error is about the Visual Assist ... wait for a patch ... (hope for a real patch)....
  24. DelphiUdIT

    Openssl dll questions

    You can read the sources of Indy to look how it works (with the OpenSSL 1.0.2u, the Indy develop with RAD Studio use this version). Look at guthub repo for more upgrades (https://github.com/IndySockets). Another way is to look how ICS works (https://wiki.overbyte.eu/wiki/index.php/ICS_Download or via GetIt).
  25. DelphiUdIT

    Installed 11.2 on new computer now get error

    This is a example of Manifest of one my Android project, you can edit and adding it (it's indicating with <----- HERE') to your AndroidManifest.XML under Android64 of your project folder: <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxxxxxxxxxxxxxxxxxx" android:versionCode="1" android:versionName="1.0.0" android:installLocation="auto"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="34" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="False" android:restoreAnyVersion="False" android:label="xxxxxxxxxxxxxxx" android:debuggable="true" android:largeHeap="false" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="xxxxxxxxxxxl" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask" android:exported="true"> <-----------------------------------------------------HERE <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="xxxxxxxxxxxxxx" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" /> </application> </manifest> <!-- END_INCLUDE(manifest) -->
×