├── .gitignore ├── .gitmodules ├── LICENSE ├── Test ├── Project1.dpr ├── Project1.dproj ├── Project1.res ├── Unit1.dfm ├── Unit1.pas ├── Win32 │ └── Release │ │ └── Project1.exe └── Win64 │ └── Release │ └── Project1.exe ├── db.sfmv.pas ├── obj ├── MoveAVX_x64.obj ├── MoveAVX_x86.obj ├── MoveSSE_x64.obj └── MoveSSE_x86.obj └── readme.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.identcache 2 | *.local 3 | *.dcu 4 | *.exe 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "mORMot2"] 2 | path = mORMot2 3 | url = https://github.com/synopse/mORMot2.git 4 | [submodule "FastMemcpy"] 5 | path = FastMemcpy 6 | url = https://github.com/skywind3000/FastMemcpy.git 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 dbyoung 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Test/Project1.dpr: -------------------------------------------------------------------------------- 1 | program Project1; 2 | {$IF CompilerVersion >= 21.0} 3 | {$WEAKLINKRTTI ON} 4 | {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} 5 | {$IFEND} 6 | 7 | uses 8 | Vcl.Forms, 9 | Unit1 in 'Unit1.pas' {Form1}, 10 | db.sfmv in '..\db.sfmv.pas'; 11 | 12 | {$R *.res} 13 | 14 | begin 15 | Application.Initialize; 16 | Application.MainFormOnTaskbar := True; 17 | Application.CreateForm(TForm1, Form1); 18 | Application.Run; 19 | end. 20 | -------------------------------------------------------------------------------- /Test/Project1.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {F70CC079-FB3D-4FAD-9C23-DD7B84A89743} 4 | 19.3 5 | VCL 6 | True 7 | Release 8 | Win32 9 | 3 10 | Application 11 | Project1.dpr 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Cfg_1 34 | true 35 | true 36 | 37 | 38 | true 39 | Cfg_1 40 | true 41 | true 42 | 43 | 44 | true 45 | Base 46 | true 47 | 48 | 49 | true 50 | Cfg_2 51 | true 52 | true 53 | 54 | 55 | true 56 | Cfg_2 57 | true 58 | true 59 | 60 | 61 | .\$(Platform)\$(Config) 62 | .\$(Platform)\$(Config) 63 | false 64 | false 65 | false 66 | false 67 | false 68 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 69 | $(BDS)\bin\delphi_PROJECTICON.ico 70 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 71 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 72 | Project1 73 | ..\mORMot2\src\core;$(DCC_UnitSearchPath) 74 | 2052 75 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 76 | 77 | 78 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 79 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 80 | Debug 81 | true 82 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 83 | 1033 84 | $(BDS)\bin\default_app.manifest 85 | 86 | 87 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 88 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 89 | Debug 90 | true 91 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 92 | 1033 93 | $(BDS)\bin\default_app.manifest 94 | 95 | 96 | DEBUG;$(DCC_Define) 97 | true 98 | false 99 | true 100 | true 101 | true 102 | true 103 | true 104 | 105 | 106 | false 107 | true 108 | PerMonitorV2 109 | 110 | 111 | true 112 | PerMonitorV2 113 | 114 | 115 | false 116 | RELEASE;$(DCC_Define) 117 | 0 118 | 0 119 | 120 | 121 | true 122 | PerMonitorV2 123 | true 124 | 1033 125 | 126 | 127 | true 128 | PerMonitorV2 129 | 130 | 131 | 132 | MainSource 133 | 134 | 135 |
Form1
136 | dfm 137 |
138 | 139 | 140 | Cfg_2 141 | Base 142 | 143 | 144 | Base 145 | 146 | 147 | Cfg_1 148 | Base 149 | 150 |
151 | 152 | Delphi.Personality.12 153 | Application 154 | 155 | 156 | 157 | Project1.dpr 158 | 159 | 160 | Embarcadero C++Builder Office 2000 Servers Package 161 | Embarcadero C++Builder Office XP Servers Package 162 | Microsoft Office 2000 Sample Automation Server Wrapper Components 163 | Microsoft Office XP Sample Automation Server Wrapper Components 164 | 165 | 166 | 167 | 168 | 169 | Project1.exe 170 | true 171 | 172 | 173 | 174 | 175 | 1 176 | 177 | 178 | Contents\MacOS 179 | 1 180 | 181 | 182 | 0 183 | 184 | 185 | 186 | 187 | classes 188 | 64 189 | 190 | 191 | classes 192 | 64 193 | 194 | 195 | 196 | 197 | classes 198 | 1 199 | 200 | 201 | classes 202 | 1 203 | 204 | 205 | 206 | 207 | res\xml 208 | 1 209 | 210 | 211 | res\xml 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi-v7a 218 | 1 219 | 220 | 221 | 222 | 223 | library\lib\armeabi 224 | 1 225 | 226 | 227 | library\lib\armeabi 228 | 1 229 | 230 | 231 | 232 | 233 | library\lib\armeabi-v7a 234 | 1 235 | 236 | 237 | 238 | 239 | library\lib\mips 240 | 1 241 | 242 | 243 | library\lib\mips 244 | 1 245 | 246 | 247 | 248 | 249 | library\lib\armeabi-v7a 250 | 1 251 | 252 | 253 | library\lib\arm64-v8a 254 | 1 255 | 256 | 257 | 258 | 259 | library\lib\armeabi-v7a 260 | 1 261 | 262 | 263 | 264 | 265 | res\drawable 266 | 1 267 | 268 | 269 | res\drawable 270 | 1 271 | 272 | 273 | 274 | 275 | res\values 276 | 1 277 | 278 | 279 | res\values 280 | 1 281 | 282 | 283 | 284 | 285 | res\values-v21 286 | 1 287 | 288 | 289 | res\values-v21 290 | 1 291 | 292 | 293 | 294 | 295 | res\values 296 | 1 297 | 298 | 299 | res\values 300 | 1 301 | 302 | 303 | 304 | 305 | res\drawable 306 | 1 307 | 308 | 309 | res\drawable 310 | 1 311 | 312 | 313 | 314 | 315 | res\drawable-xxhdpi 316 | 1 317 | 318 | 319 | res\drawable-xxhdpi 320 | 1 321 | 322 | 323 | 324 | 325 | res\drawable-xxxhdpi 326 | 1 327 | 328 | 329 | res\drawable-xxxhdpi 330 | 1 331 | 332 | 333 | 334 | 335 | res\drawable-ldpi 336 | 1 337 | 338 | 339 | res\drawable-ldpi 340 | 1 341 | 342 | 343 | 344 | 345 | res\drawable-mdpi 346 | 1 347 | 348 | 349 | res\drawable-mdpi 350 | 1 351 | 352 | 353 | 354 | 355 | res\drawable-hdpi 356 | 1 357 | 358 | 359 | res\drawable-hdpi 360 | 1 361 | 362 | 363 | 364 | 365 | res\drawable-xhdpi 366 | 1 367 | 368 | 369 | res\drawable-xhdpi 370 | 1 371 | 372 | 373 | 374 | 375 | res\drawable-mdpi 376 | 1 377 | 378 | 379 | res\drawable-mdpi 380 | 1 381 | 382 | 383 | 384 | 385 | res\drawable-hdpi 386 | 1 387 | 388 | 389 | res\drawable-hdpi 390 | 1 391 | 392 | 393 | 394 | 395 | res\drawable-xhdpi 396 | 1 397 | 398 | 399 | res\drawable-xhdpi 400 | 1 401 | 402 | 403 | 404 | 405 | res\drawable-xxhdpi 406 | 1 407 | 408 | 409 | res\drawable-xxhdpi 410 | 1 411 | 412 | 413 | 414 | 415 | res\drawable-xxxhdpi 416 | 1 417 | 418 | 419 | res\drawable-xxxhdpi 420 | 1 421 | 422 | 423 | 424 | 425 | res\drawable-small 426 | 1 427 | 428 | 429 | res\drawable-small 430 | 1 431 | 432 | 433 | 434 | 435 | res\drawable-normal 436 | 1 437 | 438 | 439 | res\drawable-normal 440 | 1 441 | 442 | 443 | 444 | 445 | res\drawable-large 446 | 1 447 | 448 | 449 | res\drawable-large 450 | 1 451 | 452 | 453 | 454 | 455 | res\drawable-xlarge 456 | 1 457 | 458 | 459 | res\drawable-xlarge 460 | 1 461 | 462 | 463 | 464 | 465 | res\values 466 | 1 467 | 468 | 469 | res\values 470 | 1 471 | 472 | 473 | 474 | 475 | 1 476 | 477 | 478 | Contents\MacOS 479 | 1 480 | 481 | 482 | 0 483 | 484 | 485 | 486 | 487 | Contents\MacOS 488 | 1 489 | .framework 490 | 491 | 492 | Contents\MacOS 493 | 1 494 | .framework 495 | 496 | 497 | 0 498 | 499 | 500 | 501 | 502 | 1 503 | .dylib 504 | 505 | 506 | 1 507 | .dylib 508 | 509 | 510 | 1 511 | .dylib 512 | 513 | 514 | Contents\MacOS 515 | 1 516 | .dylib 517 | 518 | 519 | Contents\MacOS 520 | 1 521 | .dylib 522 | 523 | 524 | 0 525 | .dll;.bpl 526 | 527 | 528 | 529 | 530 | 1 531 | .dylib 532 | 533 | 534 | 1 535 | .dylib 536 | 537 | 538 | 1 539 | .dylib 540 | 541 | 542 | Contents\MacOS 543 | 1 544 | .dylib 545 | 546 | 547 | Contents\MacOS 548 | 1 549 | .dylib 550 | 551 | 552 | 0 553 | .bpl 554 | 555 | 556 | 557 | 558 | 0 559 | 560 | 561 | 0 562 | 563 | 564 | 0 565 | 566 | 567 | 0 568 | 569 | 570 | 0 571 | 572 | 573 | Contents\Resources\StartUp\ 574 | 0 575 | 576 | 577 | Contents\Resources\StartUp\ 578 | 0 579 | 580 | 581 | 0 582 | 583 | 584 | 585 | 586 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 587 | 1 588 | 589 | 590 | 591 | 592 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 593 | 1 594 | 595 | 596 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 597 | 1 598 | 599 | 600 | 601 | 602 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 603 | 1 604 | 605 | 606 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 607 | 1 608 | 609 | 610 | 611 | 612 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 613 | 1 614 | 615 | 616 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 617 | 1 618 | 619 | 620 | 621 | 622 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 623 | 1 624 | 625 | 626 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 627 | 1 628 | 629 | 630 | 631 | 632 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 633 | 1 634 | 635 | 636 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 637 | 1 638 | 639 | 640 | 641 | 642 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 643 | 1 644 | 645 | 646 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 647 | 1 648 | 649 | 650 | 651 | 652 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 653 | 1 654 | 655 | 656 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 657 | 1 658 | 659 | 660 | 661 | 662 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 663 | 1 664 | 665 | 666 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 667 | 1 668 | 669 | 670 | 671 | 672 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 673 | 1 674 | 675 | 676 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 677 | 1 678 | 679 | 680 | 681 | 682 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 683 | 1 684 | 685 | 686 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 687 | 1 688 | 689 | 690 | 691 | 692 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 693 | 1 694 | 695 | 696 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 697 | 1 698 | 699 | 700 | 701 | 702 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 703 | 1 704 | 705 | 706 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 707 | 1 708 | 709 | 710 | 711 | 712 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 713 | 1 714 | 715 | 716 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 717 | 1 718 | 719 | 720 | 721 | 722 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 723 | 1 724 | 725 | 726 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 727 | 1 728 | 729 | 730 | 731 | 732 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 733 | 1 734 | 735 | 736 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 737 | 1 738 | 739 | 740 | 741 | 742 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 743 | 1 744 | 745 | 746 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 747 | 1 748 | 749 | 750 | 751 | 752 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 753 | 1 754 | 755 | 756 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 757 | 1 758 | 759 | 760 | 761 | 762 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 763 | 1 764 | 765 | 766 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 767 | 1 768 | 769 | 770 | 771 | 772 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 773 | 1 774 | 775 | 776 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 777 | 1 778 | 779 | 780 | 781 | 782 | 1 783 | 784 | 785 | 1 786 | 787 | 788 | 789 | 790 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 791 | 1 792 | 793 | 794 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 795 | 1 796 | 797 | 798 | 799 | 800 | ..\ 801 | 1 802 | 803 | 804 | ..\ 805 | 1 806 | 807 | 808 | 809 | 810 | 1 811 | 812 | 813 | 1 814 | 815 | 816 | 1 817 | 818 | 819 | 820 | 821 | ..\$(PROJECTNAME).launchscreen 822 | 64 823 | 824 | 825 | ..\$(PROJECTNAME).launchscreen 826 | 64 827 | 828 | 829 | 830 | 831 | 1 832 | 833 | 834 | 1 835 | 836 | 837 | 1 838 | 839 | 840 | 841 | 842 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 843 | 1 844 | 845 | 846 | 847 | 848 | ..\ 849 | 1 850 | 851 | 852 | ..\ 853 | 1 854 | 855 | 856 | 857 | 858 | Contents 859 | 1 860 | 861 | 862 | Contents 863 | 1 864 | 865 | 866 | 867 | 868 | Contents\Resources 869 | 1 870 | 871 | 872 | Contents\Resources 873 | 1 874 | 875 | 876 | 877 | 878 | library\lib\armeabi-v7a 879 | 1 880 | 881 | 882 | library\lib\arm64-v8a 883 | 1 884 | 885 | 886 | 1 887 | 888 | 889 | 1 890 | 891 | 892 | 1 893 | 894 | 895 | 1 896 | 897 | 898 | Contents\MacOS 899 | 1 900 | 901 | 902 | Contents\MacOS 903 | 1 904 | 905 | 906 | 0 907 | 908 | 909 | 910 | 911 | library\lib\armeabi-v7a 912 | 1 913 | 914 | 915 | 916 | 917 | 1 918 | 919 | 920 | 1 921 | 922 | 923 | 924 | 925 | Assets 926 | 1 927 | 928 | 929 | Assets 930 | 1 931 | 932 | 933 | 934 | 935 | Assets 936 | 1 937 | 938 | 939 | Assets 940 | 1 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | True 957 | True 958 | 959 | 960 | 12 961 | 962 | 963 | 964 | 965 |
966 | -------------------------------------------------------------------------------- /Test/Project1.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/Test/Project1.res -------------------------------------------------------------------------------- /Test/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Simple test' 5 | ClientHeight = 445 6 | ClientWidth = 700 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Segoe UI' 12 | Font.Style = [] 13 | Position = poScreenCenter 14 | OnCreate = FormCreate 15 | OnDestroy = FormDestroy 16 | PixelsPerInch = 96 17 | DesignSize = ( 18 | 700 19 | 445) 20 | TextHeight = 15 21 | object btn1: TButton 22 | Left = 8 23 | Top = 8 24 | Width = 161 25 | Height = 49 26 | Caption = 'RTL Move' 27 | TabOrder = 0 28 | OnClick = btn1Click 29 | end 30 | object btn2: TButton 31 | Left = 184 32 | Top = 8 33 | Width = 161 34 | Height = 49 35 | Caption = 'mORMot2 Move' 36 | TabOrder = 1 37 | OnClick = btn2Click 38 | end 39 | object mmoLog: TMemo 40 | Left = 8 41 | Top = 72 42 | Width = 684 43 | Height = 365 44 | Anchors = [akLeft, akTop, akRight, akBottom] 45 | Font.Charset = GB2312_CHARSET 46 | Font.Color = clWindowText 47 | Font.Height = -14 48 | Font.Name = #23435#20307 49 | Font.Style = [] 50 | ParentFont = False 51 | TabOrder = 2 52 | end 53 | object btn3: TButton 54 | Left = 360 55 | Top = 8 56 | Width = 161 57 | Height = 49 58 | Caption = 'Super Fast Move' 59 | TabOrder = 3 60 | OnClick = btn3Click 61 | end 62 | end 63 | -------------------------------------------------------------------------------- /Test/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 7 | 8 | type 9 | TForm1 = class(TForm) 10 | btn1: TButton; 11 | btn2: TButton; 12 | mmoLog: TMemo; 13 | btn3: TButton; 14 | procedure btn1Click(Sender: TObject); 15 | procedure FormCreate(Sender: TObject); 16 | procedure FormDestroy(Sender: TObject); 17 | procedure btn3Click(Sender: TObject); 18 | procedure btn2Click(Sender: TObject); 19 | private 20 | { Private declarations } 21 | Fintlen : Integer; 22 | FMemSrc, FMemDst: Pointer; 23 | public 24 | { Public declarations } 25 | end; 26 | 27 | var 28 | Form1: TForm1; 29 | 30 | implementation 31 | 32 | {$R *.dfm} 33 | 34 | uses System.Diagnostics, mormot.core.base, db.sfmv; 35 | 36 | const 37 | c_intTimes = 1000000; 38 | 39 | procedure TForm1.btn1Click(Sender: TObject); 40 | var 41 | I: Integer; 42 | begin 43 | with TStopwatch.StartNew do 44 | begin 45 | for I := 0 to c_intTimes - 1 do 46 | begin 47 | Move(FMemSrc^, FMemDst^, Fintlen); 48 | end; 49 | mmoLog.Lines.Add(Format('Sys RTL Move Times: %0.3d ms', [ElapsedMilliseconds])); 50 | end; 51 | end; 52 | 53 | procedure TForm1.btn2Click(Sender: TObject); 54 | var 55 | I: Integer; 56 | begin 57 | with TStopwatch.StartNew do 58 | begin 59 | for I := 0 to c_intTimes - 1 do 60 | begin 61 | MoveFast(FMemSrc^, FMemDst^, Fintlen); 62 | end; 63 | mmoLog.Lines.Add(Format('mORMot2 Move Times: %0.3d ms', [ElapsedMilliseconds])); 64 | end; 65 | end; 66 | 67 | procedure TForm1.btn3Click(Sender: TObject); 68 | var 69 | I: Integer; 70 | begin 71 | with TStopwatch.StartNew do 72 | begin 73 | for I := 0 to c_intTimes - 1 do 74 | begin 75 | move_avx(FMemDst, FMemSrc, Fintlen); 76 | end; 77 | mmoLog.Lines.Add(Format('FastAVX Move Times: %0.3d ms', [ElapsedMilliseconds])); 78 | end; 79 | end; 80 | 81 | procedure TForm1.FormCreate(Sender: TObject); 82 | begin 83 | Fintlen := 1024; 84 | FMemSrc := AllocMem(Fintlen); 85 | FMemDst := AllocMem(Fintlen); 86 | FillChar(FMemSrc^, Fintlen, #65); 87 | end; 88 | 89 | procedure TForm1.FormDestroy(Sender: TObject); 90 | begin 91 | FreeMem(FMemSrc); 92 | FreeMem(FMemDst); 93 | end; 94 | 95 | end. 96 | -------------------------------------------------------------------------------- /Test/Win32/Release/Project1.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/Test/Win32/Release/Project1.exe -------------------------------------------------------------------------------- /Test/Win64/Release/Project1.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/Test/Win64/Release/Project1.exe -------------------------------------------------------------------------------- /db.sfmv.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/db.sfmv.pas -------------------------------------------------------------------------------- /obj/MoveAVX_x64.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/obj/MoveAVX_x64.obj -------------------------------------------------------------------------------- /obj/MoveAVX_x86.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/obj/MoveAVX_x86.obj -------------------------------------------------------------------------------- /obj/MoveSSE_x64.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/obj/MoveSSE_x64.obj -------------------------------------------------------------------------------- /obj/MoveSSE_x86.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbyoung720/FastMove/bd44d758fbc92c992d968c15ed52f7f5c2352409/obj/MoveSSE_x86.obj -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | Super fast memory move 2 | 3 | you can use move_sse、move_avx replace rtl move function 4 | It is more than 300% higher than the rtl move function 5 | 6 | Support x86、x64 7 | 8 | Windows10 + Delphi 10.4.2 9 | --------------------------------------------------------------------------------