maximum size of a string in matlab - string

I am a newbie at matlab and I am trying to solve the following scenario.
I have large strings which need to be xor'ed essentially encoded in order to get a value.
I am using the following code snippet to perform the operation :
clear;clc;
first ='abceeeeeeeeeeeeeeeddddddddddddd';
second='defrrrrrrrrrrrrttttttttttttuuuu';
result=bitxor(uint8(double(first)) , uint8(double(second)));
In the code above I am hard coding the value of the strings. I was wondering if matlab defines a size limit on the strings? If someone could help me to understand this value more in terms of bytes it will be very helpful.
Thanks and Regards,
Bhavya

I don't think tere is a size limit attached to the variable, but there is certainly a limit in term of available memory which depends on your operating system and computer architecture.
For example, I run Matlab R2008b on a 32 bits Windows 7. The output of the command memory gives me:
Maximum possible array: 1128 MB (1.183e+009 bytes) *
Memory available for all arrays: 1470 MB (1.542e+009 bytes) **
Memory used by MATLAB: 294 MB (3.085e+008 bytes)
Physical Memory (RAM): 3519 MB (3.690e+009 bytes)
* Limited by contiguous virtual address space available.
** Limited by virtual address space available.
I can create a character array of 5e8 elements before I raise an "out of memory" error, so that is 1e9 bytes, which is in agreement with the memory output.
You can check out the technical notes related to memory management on the MathWorks website:
Maximum Matrix Size by Platform
Memory Management Guide
Avoiding 'Out of Memory' Errors

Related

Peak heap memory usage of an OCaml program

I would like to compute the peak memory usage of my OCaml program when it is running in compiled form as native code. I considered using the stats API in the Gc module, but it seems to return a snapshot at the time it is called. Is there some information in the Gc module or some other module that I can use to get peak heap usage just before my program terminates?
You can get the current size of the major heap using Gc.stat, see the live_words field, multiply it by the word size in bytes to get the size in bytes (8 in a 64 bit system). It doesn't really matter but you can also add the size of the minor heap to the calculation, which is available via Gc.get () see the minor_heap_size field (again in words).
You can create an alarm with Gc.create_alarm to check the size of the heap after each major collection to get the maximum size ever used.

What is the max length of a dart String?

What is the maximum number of characters can dart String class can hold? I searched about this question in Google Search and I can't found the answer.
It depends.
When compiled for the web, the limit is the allowed JS String length.
Checking, it seems Chrome has a 0x1FFF_FFE8 limit on string length, Firefox uses 0x3FFF_FFFE.
On the Dart native VM, the limit is memory (and the size of integers, but so far the 64-bit integers cannot be a limiting factor on contemporary hardware. You can't actually have 2^64 bytes of memory on any current 64-bit architecture.)
I ran into "Exhausted heap space" errors after trying to double a string of length 0x4_0000_0000 (16 Gb). At that point the code was already fairly slow, which is not surprising since the computer "only" has 32 Gb of physical memory.
If using a 32-bit VM, the memory limit will definitely be lower.

Increase conventional RAM in Wndows

I have a program that requires 512KB of conventional RAM but my cmd.exe only reports 500KB. My question is how do I increase RAM to the program. Thanks.
I'd say your best bet is to use a more modern programming language, but if you're constrained to QBASIC for whatever reason, you might give QB64 a try: https://www.qb64.org/
I managed to free some conventional ram by specifying:
rem config.nt file contents:
emm=ram
dos=high,umb
devicehigh=%SystemRoot%\system32\himem.sys
devicehigh=%SystemRoot%\system32\ansi.sys
files=255
After freeing up some RAM in Windows, using MEM declares the following:
655360 bytes total conventional memory
655360 bytes available to MS-DOS
626224 largest executable program size
1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
941056 bytes available XMS memory
MS-DOS resident in High Memory Area
But what I cannot figure out is why the available contiguous extended memory is always 0?

How to check the largest contiguous free blocks in matlab on linux?

In windows, I can check the largest contiguous free blocks via 'feature memstats'. But this does not work on linux. I am currently working on a project which needs to load a very large matrix(59107200*17). And I ran into 'out of memory' error. Is there any way to check this and other memory infomation in matlab on linux?
Have you tried memory function? I think it should be available on Linux as well.
Added
By the way, 59107200*17 array of doubles require about 8 Gb of memory (each double number occupies 8 bytes). Do you have it?

Linux process memory consumption in bytes (not Kbytes)

In Linux is there any way to check processes memory measured on bytes (using top or ps for example). Not in kbytes, but bytes.
Thanks in advance!
Beyond the obvious answer of multiplying by 1024 (or 1000 if you want to be SI-correct)?
AFAIK top, ps etc. get their info from reading /proc/[PID]/status or something equivalent. Which reports info in KB. So I'd guess the answer to your question is no. Not that a positive answer would be useful, since memory is allocated from the kernel at page-level granularity, and the minimum page size Linux supports is 4 KB, so you wouldn't get more "resolution" by getting the memory consumption in bytes.
multiply kbytes by 1024

Resources