Skip to content
New issue

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

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

Already on GitHub? # 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] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
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] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
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] <support@github.com>
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 <bsidhom@gmail.com>
Co-authored-by: menduz <github@menduz.com>

* 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] <support@github.com>
Co-authored-by: Jake Teton-Landis <just.1.jake@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Adam Yost <swimmadude66@users.noreply.github.com>
Co-authored-by: yar2001 <yar2001@163.com>
Co-authored-by: Lean Mendoza <leandro@decentraland.org>
Co-authored-by: Ben Sidhom <bsidhom@gmail.com>
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
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants