Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Array.prototype.fill optimisation #1

Closed
nagayev opened this issue Sep 13, 2020 · 2 comments
Closed

Array.prototype.fill optimisation #1

nagayev opened this issue Sep 13, 2020 · 2 comments

Comments

@nagayev
Copy link

nagayev commented Sep 13, 2020

My code:
var a = new Array(10**9); a=a.fill(0);
So I suggest:

Add memory limit e.g 2GB RAM
Add optimization for such arrays (like PHP Immutable arrays)

$a=array(); for($i=0;$i<1000000;$i++) $a[$i]=array("hello") memory_get_usage(true) //about 34mb

@bellard
Copy link
Owner

bellard commented Oct 2, 2020

You can enable memory limitation with the --memory-limit qjs option. Optimizing such arrays adds complexity in the engine for little benefits.

@bellard bellard closed this as completed Oct 2, 2020
@nagayev
Copy link
Author

nagayev commented Oct 3, 2020

@bellard Okey, thanks.

GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue May 6, 2022
Support cross-compilation with for Windows and macOS platforms.
starg2 pushed a commit to starg2/quickjs that referenced this issue Jan 9, 2023
cykoder pushed a commit to cykoder/quickjs that referenced this issue Sep 1, 2023
feat: support column for error and exception
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
* add opcode counter

* remove static

* update generated

* fix

* fix prettier

* remove prepack
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
* add opcode counter

* remove static

* update generated

* fix

* fix prettier

* remove prepack
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
* 0.23.0

* update changelog for 0.21.1

* Bump qs from 6.5.2 to 6.5.3 (bellard#89)

Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump decode-uri-component from 0.2.0 to 0.2.2 (bellard#83)

Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](SamVerschueren/decode-uri-component@v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix for func_id rollover (bellard#94)

* 32767 functions good, 32768 functions BAD

* change `magic` to uin16_t (avoids signed intereger overflow)

* type magic as uint32_t, add simple test

* re-enable all tests

* remove missed test code

* address PR issues

* switch to a map of maps for fnMap

* update fnId to start at min value

* skip max funcID tests for debug mode

* missed a flag

* run prettier

* Bump http-cache-semantics from 4.1.0 to 4.1.1 (bellard#97)

Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](kornelski/http-cache-semantics@v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* 0.21.2

* scripts/emcc.sh: cache lto .a files in build/emsdk-cache

* unknown change to .map file

* Emit async imports for variants (bellard#100)

* upgrade typescript

* attempt to use nodenext tsc

* revert enabling noUnused{Locals,Parameters}

* fix imports to use real extensions

* update mocha for ESM

* awkward async import issue

* npm run build

* examples/website: update for newer NPM, typescript

* fix behavior for webpack build

* bump emsdk to 3.1.31

* fix function signature

* cache another item

* use EMSDK 3.1.32 native, 3.1.31 in Docker

* add some extra default timeout

* Fix breakage caused by upgrade

* rebuild

* More precise/strict compilation (drop support for node<16)

* rebuild

* add note about MINIMAL_RUNTIME

* tested website

* ?

* pretty

* BigInt (-DCONFIG_BIGNUM) support (bellard#104)

* enable CONFIG_BIGNUM

* recompile for bignum

* bigint basics

* vm.dump for bigint

* fix bigint call

* update changelog

* dump

* Extended Symbol support (bellard#105)

* Symbol utilities

* rebuild

* update CHANGLOG.md

* rebuild docs

* update changelog

* 0.22.0

* Increase ASYNCIFY_STACK_SIZE (bellard#114)

* Increase ASYNCIFY_STACK_SIZE

* Add dynamic asyncify stack size

* update docs & changelog

* rebuild docs

* 0.23.0

* Makefile: use emscripten/emsdk:3.1.35 from docker

* rebuild

* update smoketest

* feat: BigNum (bellard#3)

* Add vim swapfiles to gitignore

* Use local emcc binary

* Build for emscripten web target

* Enable QuickJS bignum extensions

* Update generated files

* Update README.md

* test

* build

* build

* new package name

Co-authored-by: Ben Sidhom <[email protected]>
Co-authored-by: menduz <[email protected]>

* feat: add opcode instructions counter (bellard#1)

* add opcode counter

* remove static

* update generated

* fix

* fix prettier

* remove prepack

* feat: move opcode counters to uint64 (bellard#4)

* feat: move the counter to 64bit

* fix test

* increase mocha timeout

* fix prettier

* rebuild

* fix lock

* fix package.json

* prettier

* ignore emsdk-cache in prettier

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Jake Teton-Landis <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Adam Yost <[email protected]>
Co-authored-by: yar2001 <[email protected]>
Co-authored-by: Lean Mendoza <[email protected]>
Co-authored-by: Ben Sidhom <[email protected]>
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
GerHobbelt pushed a commit to GerHobbelt/quickjs that referenced this issue Oct 17, 2023
MarkAckert pushed a commit to MarkAckert/quickjs-profiling that referenced this issue Dec 18, 2024
bsekisser added a commit to bsekisser/quickjs that referenced this issue Jan 15, 2025
EXTRA_LIBS='-latomic' is not enough...
	qjsc needs to pass the same for producing output.

same issue or possibly related to issue...
	bellard#321

compiling platform uname -a
	Linux raspberrypi 6.6.62+rpt-rpi-v8 bellard#1 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25) aarch64 GNU/Linux

	modified:   qjsc.c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants