Friday, May 12, 2017

Digest for comp.lang.c++@googlegroups.com - 5 updates in 4 topics

David Brown <david.brown@hesbynett.no>: May 12 10:29AM +0200

On 11/05/17 21:45, Jerry Stuckle wrote:
>> On 11/05/17 15:59, Jerry Stuckle wrote:
>>> On 5/11/2017 2:27 AM, Gareth Owen wrote:
>>>> David Brown <david.brown@hesbynett.no> writes:
 
<snipping the bits we agree on>
 
>> of it all without an inordinate amount of time and effort.
 
> In practice, yes. There are limits to both registers and pipelines
> which a good programmer can handle. The same with scheduling.
 
It gets /really/ fun on a processor like MIPS, with branch delay slots
to consider!
 
> But I
> disagree that a small change in one part of the assembly will have any
> noticeable effect on unrelated code.
 
"/will/ have a noticeable effect" implies that is always or usually the
case - I said "/can/", because it is something that /can/ happen. I
don't think it is common, but it is absolutely possible. One example
situation is where you are trying to keep all your relevant data in
registers. Changes in one part of the function can mean you need
different priorities in a different part - either earlier or later. It
might not mean /big/ changes, but it will mean changes. In C, you can
make another local variable when you want it - in assembly, if you run
out of registers you need to make changes.
 
Another case is when you have limited branch or conditional execution
capability. Some processors have support for small and fast versions
that are limited in size. For example, the ARM Thumb-2 instruction set
has an "if-the-else" construct that supports up to four conditional
instructions. Make a change that goes over that limit of four, and you
have to re-structure the code to use conditional branches.
 
This kind of thing is usually more relevant on RISC cpus than x86
(especially in 32-bit mode) where your register usage is already very
limited in flexibility.
 
All this might not have a noticeable effect on code performance - but it
does have an effect on the time and effort spent.
 
>> the time on the tedious detail, and has a high chance of getting at
>> least something wrong.
 
> In some cases, no amount of effort is "too much".
 
True.
 
> code. Data collection and analysis of large scientific projects such as
> the VLA (large array of radio telescopes), the NSF's LIGO (gravitational
> wave detector) and CERT's Large Hadron Detector are just three examples.
 
No, those are /not/ good examples. It is true that minimising latencies
here can be very important - but it is not the case that it is done by
using assembly. For these sorts of systems, coding is done carefully in
C or C++ for maintainability, correctness, flexibility, and lower
development costs. When the smallest latencies are needed (and the
smallest variation in latencies, which is usually more important), they
switch to programmable logic. Assembly gives very little benefit over C
or C++ in terms of speed, no benefit in terms of latency variation (it
is still subject to caches, interrupts, etc.), and much higher
development costs and risks. Programmable logic lets them get latency
variation down to a single clock cycle - it is worth the cost.
 
On the other hand, these same groups need to do massive analysis of the
data afterwards - passing it through filters, fourier transforms, etc.,
that need as high throughput as possible but which can tolerate
variations in timings. This sort of thing is done on arrays of
commodity processors (or perhaps graphics processors). Here it can be
worth making the kernels of these filters in assembly - you know the
target processor, and saving 2% average time will save 2% hardware
budget and 2% electricity costs. It is absolutely worth the effort
going for assembly there.
 
 
> It is perfectly possible to write clean and maintainable assembly code -
> and make it the fastest possible result. It's done every day at each of
> the above projects.
 
Possible? Yes. But it is a rare thing - especially on "big"
processors. It is a different matter for small microcontrollers, where
it is far easier to track exactly what you are doing because there is a
small instruction set, no scheduling or multiple issues, very clear and
simple pipelines, no caches, etc.
 
>> unrealistic to think that it /would/ be done, except in extreme cases.
 
> As I said - there are many instances in the scientific world where that
> is necessary. And there are programmers who do it.
 
I agree that it /is/ done, I merely say that it is very rarely worth the
effort. Massive scientific processing is an example where it sometimes
/is/ worth the effort.
 
asetofsymbols@gmail.com: May 12 10:06AM -0700

Woman and computer it will be 3%
fl <rxjwg98@gmail.com>: May 12 07:07AM -0700

On Thursday, May 11, 2017 at 3:13:40 PM UTC-4, Alf P. Steinbach wrote:
> > { *this = v; }
 
> Cheers & hth.,
 
> - Alf
 
Thank you for your help. When I run below code, I find one calls assignment
while the other calls copy constructor. It is obvious it is caused by the
template parameter <W>. It is still a surprise to me. I thought both should
call copy constructor. Can you explain it to me?
 
Thanks,
 
//////////////////
const sc_biguint<4> atomwrj1(2);
sc_biguint<3> atomwrj0=atomwrj1; // Thus calls assignment constructor
sc_biguint<4> atomwrj2=atomwrj1; // This calls copy constructor
 
// copy constructor
sc_biguint( const sc_biguint<W>& v )
: sc_unsigned( W )
{ *this = v; }
 
// assignment constructor
sc_biguint( const sc_unsigned& v )
: sc_unsigned( W )
{ *this = v; }
Legit Deals <no_email@invalid.invalid>: May 12 05:48AM

WE OFFER DISCREET OVERNIGHT SHIPMENTS TO BUYERS IN USA AND CANADA AND 48-72
HOURS DELIVERY TO BUYERS IN EUROPE AND ASIA DEPENDING ON YOUR LOCATION. WE
DO PROVIDE TRACKING NUMBERS AS PROOF OF SHIPMENTS SO YOU CAN TRACK YOUR
PARCELS TIMELY. SO IF INTERESTED JUST CONTACT US NOW FOR INSTANT RESPONSE
Customer service.
-EMAIL : keystonemeds@protonmail.com / -Tel: +1(213) 5346894 / -Get W1ckr
App and message Us at W1ckr ID: intermeds247
 
Benefits of our service:
We are a reliable supplier/shipper to fill your daily online orders from
customers around the world as well as supply your wholesale business with
bulk orders.Our company has an extensive list on medications and can
provide all shipping options like (Regular post, EMS, DHL. UPS. )
Help Desk EMAIL : keystonemeds(AT)protonmail(DOT)com / -Tel: +1(213)
5346894 / -Download W1ckr App and message Us at W1ckr ID: intermeds247
 
-Xanax
-Ritalin
-Activan
-oxycondon
-oxycontin
-Valium
-Actiq
-Bulytone (bk-MBDB)
-Flephedrone
-Butylone (bk-MBDB )
-Barbiturates
-methadone
-Advair Diskus 250mcg/50mcg
-Benzodiazepines
-Amphetamine
-Buprenorphine
-Solvents
-HGH
-Methylone Crystals
-Methylone Powder
-Ketamine HCL
-AICAR Powder
-AICAR Pills
-GW1516 Powder
-GW 501516 Pills
-Ephedrine
-Mephedrone Powder
-Mephedrone Crystal
-4-CMC / Clephedrone
-Synthacaine
-Dimethocaine
-Amphetamine Powder
-Amphetamine Crystal
-Ethylone
-sibutramine
Gamma-Butyrolactone (GBL) Powder Gamma-Butyrolactone (GBL) Liquid / lactone
Gamma Hydroxybutyrate (GHB) Powder Gamma Hydroxybutyrate (GHB) Liquid Gamma
Hydroxybutyrate (GHB) Pills N,N-Dimethyltryptamine (DMT)
4-Aco-DMT
4-MeO-DMT
5-Meo-DMT
-Benzo Fury
-MDMA Powder
-Mephedrone Pills
-Nembutal Pentobarbital Liquid Nembutal Pentobarbital Powder Nembutal
Pentobarbital Pills
-Crystal Meth Ice
-Ketamine
-Heroin
-Cocaine
-MDMA
-LSD
-Oxycodone-A215
-Oxycontin
-Adderall
-Xanax
-Opana
-MDMA Pills(Ecstasy Pills)
-Morphine
-Actavis Promethazine Cough Syrup with codeine Medicated Marijuana....all
strain...Grade A Cocaine
-ketamine
-LSD
-Heroin
-Codeine
-Medical Marijuana
-Tobacco
-MDPV
-Mephedrone
-Mdma
-Ecstasy
-Mdai
-Methedrone
-Methylone
-diabetes meds
-infidelity meds
-methamphetamine
-Percocet
-Klonopin
-Dilaudid
-Ecstasy
 
Delivery is 100% safe due to our discreetness and experience.Try our
quality and experience then have a story to tell another day. EMAIL :
keystonemeds(AT)protonmail(DOT)com / -Tel: +1(213) 5346894 / -Download
W1ckr App and message Us at W1ckr ID: intermeds247
 
PLEASE ONLY SERIOUS BUYERS ARE WELCOME
udpbot <bleachbot@httrack.com>: May 12 07:48AM +0200

You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com.

No comments: