A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2001-October/018260.html below:

[Python-Dev] Slices and "==" optimization

[Python-Dev] Slices and "==" optimizationMartin v. Loewis martin@v.loewis.de
Tue, 30 Oct 2001 18:54:55 +0100
> > That's why I would like the simple
> > 
> > 	if (v == w) return 0;
> > 
> > integrated into the ceval loop right along the INT-compare
> > optimization. 
> 
> Maybe this could be done as follows:
> 
>     if (v == w && PyString_CheckExact(v)) return 0;

Maybe I'm missing some context here: where is this fragment supposed
to go to? into ceval.c:COMPARE_OP? What is the "return 0;" doing then?

In any case, I think measurements should show how much speed
improvement is gained by taking this short-cut. It sounds nice in
theory, but ...

I just added the block

		else if ((v == w) && (oparg == EQ) && PyString_CheckExact(v)) {
			x = Py_True;
			Py_INCREF(x);
		}

into the code. In an application that almost exclusively does
COMPARE_OPs on identical strings, I got a 30% speed-up. OTOH, this
same code caused a 10% slowdown if I converted the "==" into "<>".

In a real application, total speed-up will depend on two things:
- how many COMPARE_OPs are done in the code?
- how many of those compare identical strings for equality?

Running the PyXML test suite, I counted 120000 cases where
slow_compare was done, and only 700 cases identical strings were
compared for equality.

Regards,
Martin



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4